題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”
。例如,當字符串爲We Are Happy.
則經過替換之後的字符串爲We%20Are%20Happy
分析
-
思路一:
從頭到尾
遍歷字符串做替換,時間複雜度爲O(n2)
,效率低。
-
思路二:從尾到頭遍歷字符串做替換,時間複雜度爲O(n),效率高。
-
利用python
str
內置`方法,簡易解決。時空複雜度不是最優。
代碼
// C++
class Solution {
public:
// 指向字符數組的字符指針str,字符數組長度length
void replaceSpace(char *str,int length) {
// 邊界檢查1:判斷字符數組是否爲空
if(str==NULL)
return ;
// 遍歷字符串,統計空格個數、替換前字符個數、替換後字符個數
int CountOfBlanks=0; // 空格個數
int Originallength=0;// 替換前字符個數
int len=0; // 替換後字符個數
for(int i=0;str[i]!='\0';++i)
{
Originallength++;
if(str[i]==' ')
++CountOfBlanks;
}
len =Originallength+2*CountOfBlanks;
// 邊界檢查2:判斷字符數組是否越界
if(len+1>length)
return ;
// 替換空格
char*pStr1=str+Originallength;// 字符指針指向原始字符串的末尾
char*pStr2=str+len; // 字符指針指向替換後字符串的末尾
while(pStr1 != pStr2) // 替換結束的條件
{
if(*pStr1==' ')
{
*pStr2--='0';
*pStr2--='2';
*pStr2--='%';
}
else
{
*pStr2--=*pStr1;
}
--pStr1;
}
}
};
# python
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
return '%20'.join(s.split(' '))
#return s.replace(' ', '%20')