劍指Offer:字串替換問題
阿新 • • 發佈:2018-12-13
題目描述
請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。
解題思路
因為使用C++語言描述,所以replaceSpace函式中的length為char陣列最大可表示字串的長度,因此需要先得出陣列中的字串長度,空格個數,再由此得到替換空格後的字串長度。之後從字串結束符’\0’開始向前替換。
程式碼
class Solution { public: void replaceSpace(char *str,int length){ int count = 0;//空格個數 int length_before = 0; int length_replaced = 0;//替換空格後的字串長度; if (str == nullptr||length<0) return; for (int i = 0; str[i]!='\0'; i++){ length_before++; if (str[i] == ' ') count++; } length_replaced = length_before + count * 2; if(length_replaced>length) return; for (int i = length_replaced,j=length_before; j>=0; j--,i--){ if (str[j] == ' '){ str[i-2] = '%'; str[i-1] = '2'; str[i] = '0'; i -= 2; } else{ str[i] = str[j]; } } std::cout << str << endl; } };