其他分享
首页 > 其他分享> > 剑指offer 替换空格

剑指offer 替换空格

作者:互联网

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

 

思路:恩。人生苦短,我用python。

python实现:

1 # -*- coding:utf-8 -*-
2 class Solution:
3     # s 源字符串
4     def replaceSpace(self, s):
5         # write code here
6         return "%20".join(s.split(" "))

C++实现:

如果从头开始扫描,那么每遇到一个空格,都要将后面的字符往后移位,因此可以从串尾开始扫描。

 1 class Solution {
 2 public:
 3     void replaceSpace(char *str,int length) {
 4         //sOldLength记录origin string的长度,sNum记录空格个数。length表示字符串str预先开辟的空间长度
 5         int sOldLength = 0, sNum = 0, i = 0;
 6         while (str[i] != '\0') {
 7             sOldLength++;
 8             if (str[i] == ' ') {
 9                 sNum++;
10             }
11             i++;
12         }
13         //sNewLength表示新串的长度
14         int sNewLength = sOldLength + 2 * sNum;
15         if (sNewLength >= length || (sNum == 0)) //sNum=0表示空格数为0,可以不用扫描原来字符串,直接返回。
16             return;
17         while (sOldLength >= 0) {
18             if (str[sOldLength] == ' ') {
19                 str[sNewLength--] = '0';
20                 str[sNewLength--] = '2';
21                 str[sNewLength--] = '%';
22             } else {
23                 str[sNewLength--] = str[sOldLength];
24             }
25             sOldLength--;
26         }
27     }
28 };

 

标签:sOldLength,offer,sNewLength,空格,str,字符串,sNum,替换
来源: https://www.cnblogs.com/qinduanyinghua/p/10642415.html