CCI习题1-5:Replace Space

By | 2012 年 11 月 13 日

用gets可以输入带空格的字符串,遇到enter结束。

第一遍扫描获得输入字符串的长度len和其中空格的个数spaceCount。那么输出字符串长度应该是len + 2 * spaceCount
第二遍扫描将输入字符串中非空格字符直接复制到输入字符串中,空格替换成”%20″



题目
Write a method to replace all spaces in a string with ‘%20’.



代码

<

pre>
//
// main.cpp
// CCI.1.5.Replace Space
//
// Created by Qiu Xiangyu on 12-11-13.
// Copyright (c) 2012年 Qiu Xiangyu. All rights reserved.
//

include

using namespace std;

char replaceSpace(char *cstr) {
if (NULL == cstr) {
return NULL;
}
size_t len = 0;
int spaceCount = 0;
while (cstr[len] != ‘\0’) {
if (cstr[len] == ‘ ‘) {
++spaceCount;
}
++len;
}
size_t finalLen = len + spaceCount * 2;
char *ret = new char[finalLen + 1];
size_t curi = 0;
while (
cstr != ‘\0’) {
if (*cstr == ‘ ‘) {
ret[curi++] = ‘%’;
ret[curi++] = ‘2’;
ret[curi++] = ‘0’;
} else {
ret[curi++] = *cstr;
}
++cstr;
}
ret[curi] = ‘\0’;
return ret;
}

int main(int argc, const char * argv[])
{
// insert code here…
cout << “Input below:\n”;
char cstr[200];
gets(cstr);
cout<<“Input:”<<cstr<<endl;

//process
char *newstr = replaceSpace(cstr);
cout<<"Result : "<<newstr<<endl;
delete newstr;

return 0;

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注