微软的一个面试题目
2011-06-05 22:37
423 查看
写一个函数,删除给定字符串中的多余空格,要求:
1. 无相邻的两个空格;
2. 字符串开头和结尾无空格;
3. 新一行的开头和结尾无空格;
4. 不能增加新的内存空间;
5. 只能循环遍历一次;
6. 仅能用到IsSpace和IsNewLine函数,且写出相应实现。
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"; }
相关文章推荐
- 微软面试100题目之17 :在一个字符串中找到第一个只出现一次的字符。
- 测试杯子(微软的一个软件测试面试题目)
- 贴上我珍藏的微软测试工程师面试题目
- 一个小的面试题目
- 小米,微软,百度等公司的面试题目及其推广与解析
- 这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。
- 关于微软面试100题系列中两道题目的个人解法
- 微软面试中简单的算法题目
- 微软面试100题目之5 查找最小的k个元素
- 如何消除一个数组里面的重复元素?(面试题目)
- 微软面试题目意义深远:制度建设问题
- 微软面试题目答案
- 最新的微软面试题,题目:求一个字符串中连续出现次数最多的子串
- 微软面试100题之14题:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 微软面试100题之20题:输入一个表示整数的字符串,把该字符串转换成整数并输出
- 数据结构微软面试题目
- 设计一个魔方(六面)的程序 【微软面试100题 第四十四题】
- 一个没有做出来的php面试题目
- 微软面试题目及答案
- 微软面试题目完全版