一道笔试题,去除首尾空白符,中间若有连续空格则保留一个,若出现换行则保留一个换行
来源:互联网 发布:预算通软件 编辑:程序博客网 时间:2024/06/10 22:27
比如:
" \n \n a b \nc \n \n\nc\nde f g\n\nhi\n\n\n \n "
处理后变为:
“a b\nc\nc\nde f g\nhi”
这里,空白符只考虑空格和换行,若连续的空格超过两个,则留一个;若连续空白符中出续换行,则留一个换行而不留空格。
实现过程比较绕,写下面备忘。
1. 先分别去除首尾空白符。这比较简单,只不过要注意字符的长度也跟着变化。
2。处理中间部分:则4个变量:
int i; 将被替换的位置。
int j;每次循环都自增,用于判断字符的状况。
int cnt;记录连续空白符的个数。
bool b; 记录连续空白符中是否出现换行。
代码如下(还可优化):
int trim( char* str, int len ){if( str == NULL || *str == 0 )return 0;//去头while( *str == ' ' || *str == '\n' ){++str;--len;}//去尾while( *(str+len-1) == ' ' || *(str+len-1) == '\n' )--len;*(str+len) = 0;printf("去首尾空白符后\n%s\n",str);int i=0,j=0,cnt=0;bool b = false;for (;j<len;++j){if( str[j] == ' ' || str[j] == '\n' )++cnt;elsecnt = 0;if( str[j] == '\n' && cnt >= 2 )b = true;else if( cnt == 0 )b = false;if( i != j ){if(b)str[i-1] = '\n';str[i] = str[j];}if(cnt < 2) ++i;}str[i] = 0;printf("最后字串:\n%s\n",str);return i;}int _tmain(int argc,char* argv[]){const int N = 100;char a[N] = " \n \n a b \nc \n \n\nc\nde f g\n\nhi\n\n\n \n ";trim(a,strlen(a));return 0;}输出:
去首尾空白符后a bccde f ghi最后字串:a bccde f ghi请按任意键继续. . .上述时间复杂度为O(n),辅助空间为O(1)。代码还可优化,比如当 i != j时,若j处在连续空白状态,可以不用换,不过这样写起来太绕,就不这么做了。
- 一道笔试题,去除首尾空白符,中间若有连续空格则保留一个,若出现换行则保留一个换行
- 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
- 去掉一个字符串的首尾空格,若中间有空格仅保留一个
- java----输入一个字符串,去掉字符串开头的空格和结尾的空格,若字符串中间有连续的空格,则只保留一个空格。
- 去除字符串首尾空格,中间多个空格只保留一个
- 去除连续空格,并保留一个空格
- java----输入一个字符串,去掉字符串开头的空格和结尾的空格,若字符串中间有连续的空格,则只保留一个空格。(使用list解答)
- 去除多余空格 多个连续空格只保留一个
- 需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个
- 去除str1中的多余空格(即两个单词中间仅保留一个空格)
- 文字自动换行,保留空格和换行符
- ios 去除字符串首尾空格、换行
- ios 去除字符串首尾空格、换行
- ios 去除字符串首尾空格、换行
- 去掉首尾空格然中间只能有一个空格
- EXCEL中去掉单元格首尾空格,保留字符串中间空格
- java中过滤字符串首尾的空格,保留中间空格
- 去除字符串中多个空格,只保留一个空格
- SDET/测试开发工程师
- Expected build key “Windows msvc release full-config” got “Windows mingw release full-config”
- 优秀博客链接
- 14、从头学Android之机器人的意图之Intent的CompentName
- android中styles的使用
- 一道笔试题,去除首尾空白符,中间若有连续空格则保留一个,若出现换行则保留一个换行
- |myEclipse中代码的修改不起作用
- 你幸福了吗&顺其自然 用尽全力
- BCB 水波效果
- MFC 做不规则对话框
- Drawable资源
- 计算某个文件或文件夹的大小 文件夹内可能含有子文件夹
- 2011级同学加分通知(只针对河软高校俱乐部2011级同学)
- 类,对象和实例深入理解