您的位置:首页 > 职场人生

微软的一个面试题目

2011-06-05 22:37 423 查看
写一个函数,删除给定字符串中的多余空格,要求:

1. 无相邻的两个空格;

2. 字符串开头和结尾无空格;

3. 新一行的开头和结尾无空格;

4. 不能增加新的内存空间;

5. 只能循环遍历一次;

6. 仅能用到IsSpace和IsNewLine函数,且写出相应实现。

]/**
* guodawei1129@gmail.com
*/
#include <iostream>
using namespace std;
bool isNewLine(char ch)
{
return ch == '/n';
}
bool isSpace(char ch)
{
return ch == ' ';
}
char *removeExtraSpace(char *str)
{
char *curr = str, *iter = str;
while(*iter != '/0'){
if((curr == str && isSpace(*iter)) ||
(curr != str && isSpace(*(curr-1)) && isSpace(*iter)) ||
(curr != str && isNewLine(*(curr-1)) && isSpace(*iter)) ){
++iter;
}else if(isSpace(*(curr-1)) && isNewLine(*iter)){
*(curr-1) = *iter++;
}else{
*curr++ = *iter++;
}
}
isSpace(*(curr-1)) ? *(curr-1) = '/0' : *(curr) = '/0';
return str;
}
int main()
{
char str[] = "  hello   /n  world  ms/n  ";
cout<<"["<<str<<"]/n";
cout<<"["<<removeExtraSpace(str)<<"]/n";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: