剑指offer - 空格替换

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

解析:
先从前往后数找到有多少个空格,计算出新的字符串的长度。然后,从后向前移动,非空格的直接移动到 cnt * 2 + i 的位置,而遇到空格时从(cnt - 1)* 2 + i 的位置依次放入 %20

class Solution {
public:
	void replaceSpace(char *str,int length) {
        int cnt=0;
        for(int i=0; i<length; i++)
        {
            if(str[i]==' ') cnt++;
        }
        
        for(int i=length - 1; i>=0; i--)
        {
            if(str[i]!=' ') str[i+cnt*2] = str[i];
            else{
                cnt--;
                str[i+2*cnt]='%';
                str[i+2*cnt+1]='2';
                str[i+2*cnt+2]='0';
            }
            
        }
	}
};
发布了55 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38204302/article/details/104185109