剑指 Offer 05. 替换空格

一、原地替换(resize字符串)

  1. class Solution {
  2. public:
  3. string replaceSpace(string s) {
  4. int count = 0;
  5. int n =s.size();
  6. for(int i=0;i<n;i++)
  7. {
  8. if(s[i]==' ')
  9. count +=3;
  10. else
  11. count++;
  12. }
  13. s.resize(count);
  14. for(int i =count-1,j=n-1;j<i;i--,j--)
  15. {
  16. if(s[j]==' ')
  17. {
  18. s[i] = '0';
  19. s[i-1] = '2';
  20. s[i-2] = '%';
  21. i-=2;
  22. }
  23. else
  24. s[i]=s[j];
  25. }
  26. return s;
  27. }
  28. };

二、定义新字符串

  1. class Solution {
  2. public:
  3. string replaceSpace(string s) {
  4. string s1;
  5. for(int i = 0;i < s.size();i++)
  6. {
  7. if(s[i] == ' ')
  8. {
  9. s1 += "%20";
  10. }
  11. else
  12. {
  13. s1 += s[i];
  14. }
  15. }
  16. return s1;
  17. }
  18. };