1. 程式人生 > >劍指Offer:字串替換問題

劍指Offer:字串替換問題

題目描述

請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。

解題思路

因為使用C++語言描述,所以replaceSpace函式中的lengthchar陣列最大可表示字串的長度,因此需要先得出陣列中的字串長度,空格個數,再由此得到替換空格後的字串長度。之後從字串結束符’\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;
         }
    };