1. 程式人生 > 其它 >劍指offer 2替換空格 c++和python

劍指offer 2替換空格 c++和python

題目

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

c++版

class Solution {
public:
	void replaceSpace(char *str,int length) {
        string res = "";
        for(int i = 0;i < length;++i){
            if(str[i]==' '){
                res = res + "%20";
            }
            else{
                res = res + str[i];
            }
        }
        return res;
	}
};

其實上面程式碼的這個邏輯是可以的,把void改成返回值為string,但是他要求返回值為空,也就是直接修改原來的字串

class Solution {
public:
	void replaceSpace(char *str,int length) {
        string res(str);  //字元陣列變string
        int i = 0;
        while(res.find(' ')!=string::npos){  //如果找到空格
            i = res.find(' ');   //空格所在位置
            res.erase(i,1);  //刪除這個空格
            res.insert(i,"%20");  //在這個位置插入  %20,然後繼續查詢空格
        }
        auto s = res.c_str();  //c_str()函式返回一個指向字元陣列的指標常量, 內容與本res這個string串相同。注意:一定要使用strcpy()函式 等來操作方法c_str()返回的指標。
        strcpy(str,s);
	}
};

python版

# -*- coding:utf-8 -*-
class Solution:
    # s 源字串
    def replaceSpace(self, s):
        temp = s.replace(' ',"%20")
        return temp
        # write code here

或者和c++一樣,一個個替換

# -*- coding:utf-8 -*-
class Solution:
    # s 源字串
    def replaceSpace(self, s):
        res = ''
        for char in s:
            if char == ' ':
                res += '%20'
            else:
                res += char
        return res
        # write code here