剑指Offer:替换空格

剑指Offer:替换空格

问题描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

解题思路:

  1. 字符串的替换,首先想到的是string操作函数:replace
  2. 通过find()找出空格字符,将其替换对应的字符;
  3. find()找出的是字符串的第一个指定字符,通过死循环,不断寻找指定字符;
  4. 在循环当中,通过if else条件语言,结束循环。

注意:

  1. find()返回值是无符号的整数数据(size_type),定义成int类型也可以(强制类型转换);
  2. 在if循环中,注意判断语句的写法,只能这样写,在外部定义npos类型之后,再使用也不行;
class Solution {
public:
    string replaceSpace(string s) 
    {
        string::size_type pos;
        //int pos;
        //string::npos; //定义之后再使用,出现错误??
        while(true)
        {
            if((pos=s.find(' ')) != string::npos)
            {
                s.replace(pos, 1, "%20");
            }
            else
            {
                break;
            }
        }
        return s;
    }
};
posted @ 2020-02-15 22:05  Ternence_zq  阅读(85)  评论(0编辑  收藏  举报