本文共 1271 字,大约阅读时间需要 4 分钟。
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”限制:
0 <= s 的长度 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。C++
方法1:如果不强制要求在原来的字符串替换class Solution { public: string replaceSpace(string s) { /* 创建一个新字符串 然后遍历赋值 */ if(s.size()==0) return s; string res; for(int i=0;i
方法2:如果要求在原来的字符上替换
替换相当于用三个字符替换现在的一个字符,所以字符串整体需要向后移动; 先统计字符串中空格字数 然后设置两个指针, 一个指向现在的尾部 另一个指向替换之后的字符串尾部class Solution { public: string replaceSpace(string s) { if(s.size()==0) return s; int befor_len=s.size()-1; //指针1; int count=0; //字符串中的空格个数 for(char c : s){ if(c==' ') count++; } int now_len=befor_len+count*2; //指针2 s+=string(count*2,' '); //把原字符串空间扩大 while(befor_len>=0 && now_len> befor_len){ if(s[befor_len]==' '){ s[now_len--]='0'; s[now_len--]='2'; s[now_len--]='%'; } else{ s[now_len--]=s[befor_len]; } befor_len--; } return s; }};
这两个方法的时间复杂度都是O(n)