剑指offer05:替换空格
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解法一:判断空格,后移两位元素
class Solution {
public:
void replaceSpace(char *str, int length) {
for (int i = 0; i<length; i++)
{
if (str[i] == ' ')
{
for (int j = length + 1; j >= i + 3; j--)
str[j] = str[j - 2];
str[i] = '%';
str[i + 1] = '2';
str[i + 2] = '0';
length += 2;
}
}
}
};
解法二:利用string和find函数
class Solution2 {
public:
void replaceSpace(char *str, int length) {
string s(str);
int i = 0;
while ((i = s.find(' ', i))>-1) {
s.erase(i, 1);
s.insert(i, "%20");
}
auto ret = s.c_str();
strcpy(str, ret);
}
};
main函数
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <ctype.h>
#include <cctype>
using namespace std;
int main()
{
char s[18] = "I love you!";
Solution a;
a.replaceSpace(s, 18);
for (int i = 0; i < 18; i++)
cout << s[i];
system("pause");
return 0;
}