题目1510:替换空格

来源:互联网 发布:接入网络服务商编码 编辑:程序博客网 时间:2024/05/22 11:34

http://ac.jobdu.com/problem.php?pid=1510

题目描述:

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

输入:

每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。

输出:

对应每个测试案例,出经过处理后的字符串。

样例输入:
We Are Happy
样例输出:
We%20Are%20Happy
不知道为嘛错了的代码:

#include <iostream>#include <string>#include <sstream>#include <vector>using namespace std;int main(){string s;vector<string> svec;while(getline(cin, s)){stringstream ss;string s1;ss << s;while(ss >> s1)svec.push_back(s1);int ssize = svec.size();for(int i = 0; i < ssize; ++i){cout << svec[i] << ((i+1-ssize)?"%20":"\n");}}return 0;}


简洁的AC代码:

#include <cstdio>int main(){char ch;while((ch = getchar()) != '\n'){if(ch != ' ')printf("%c", ch);elseprintf("%%20");}printf("\n");return 0;}


另一种解法:

#include <cstdio>#include <cstring>char str[1000000];int main(){gets(str);int len = strlen(str);int count = 0;for(int i = 0; i < len; ++i){if(str[i] == ' ')++count;}int newlen = len + count*2;str[newlen] = 0;while(len >= 0){if(str[len] != ' '){str[newlen] = str[len];--len;--newlen;}else{str[newlen] = '0';str[newlen - 1] = '2';str[newlen - 2] = '%';newlen -= 3;--len;}}puts(str);return 0;}


#include <iostream>#include <string>using namespace std;int main() {    int count;    int size;    string s;    while (getline(cin, s)) {        count = 0;        size = s.size();        for (int i = 0; i < size; ++i)             if (s[i] == ' ')                ++count;        s.resize(size + 2 * count);        for (int i = size; i >= 0; --i) {            if (s[i] == ' ') {                s[i + 2 * count] = '0';                s[i + 2 * count - 1] = '2';                s[i + 2 * count - 2] = '%';                --count;            } else {                s[i + 2 * count] = s[i];            }        }        cout << s << endl;    }    return 0;}


0 0