OpenJudge就算概论-过滤多余的空格

简介: /*===================================== 过滤多余的空格 总时间限制: 1000ms 内存限制: 65536kB 描述 一个句子的每个单词之间也许有多个空格,过滤掉多余的空格,只留下一个空格 输入 一个字符串(长度不超过200),句子的头和尾都没有空格。
/*=====================================
过滤多余的空格
总时间限制:
    1000ms
内存限制:
    65536kB
描述
    一个句子的每个单词之间也许有多个空格,过滤掉多余的空格,只留下一个空格
输入
    一个字符串(长度不超过200),句子的头和尾都没有空格。
输出
    过滤之后的句子
样例输入
    Hello      world.This is    c language.
样例输出
    Hello world.This is c language.
    
思路:
输入字符串a,用gets输入。 
用两个下标i、j分别指向数组a,a[i]是将要被移动的字符,
a[j]是将要被a[i]覆盖的单元。
开始时i、j都指向a[0]。
从左向右扫描a数组,遇到非空格字符a[i]直接复制到a[j].
遇到空格字符则看a[j]的前一个是否空格,若是空格则新
出现的空格是多余的,否则新出现的空格是需要保留的。 
======================================*/
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char a[205];
 6     int i,j,len;
 7     freopen("5.in","r",stdin);
 8     gets(a);
 9     len=strlen(a);
10     for(i=0,j=0;i<len;i++)//i是扫描原数组a的下标,j是调整后的下标。
11     {
12         if(a[i]!=' ')//非空格字符 
13         {
14             a[j]=a[i];
15             j++;
16         }
17         else
18         {//遇到空格 
19             if(a[j-1]!=' ')//a[j]的前一个不是空格 
20             {
21                 a[j]=a[i];
22                 j++;
23             }
24         }
25     }
26     a[j]='\0'; 
27     printf("%s\n",a);
28     return 0;
29 }

 

相关文章
|
8月前
|
算法
算法编程(二十五):检查单词是否为句中其他单词的前缀
算法编程(二十五):检查单词是否为句中其他单词的前缀
68 0
|
8月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
65 0
|
3月前
|
数据库
sqlmap过滤连续空格的方法(一)
sqlmap过滤连续空格的方法(一)
|
3月前
|
Shell 网络安全 数据库
sqlmap过滤连续空格的方法(二)
sqlmap过滤连续空格的方法(二)
|
7月前
|
Java
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
|
存储 Cloud Native Go
【刷题日记】1455. 检查单词是否为句中其他单词的前缀
【刷题日记】1455. 检查单词是否为句中其他单词的前缀
114 1
|
8月前
过滤多余的字符串
过滤多余的字符串
31 0
查找单词个数案列实现(字符串流)
查找单词个数案列实现(字符串流)
45 0
|
算法 索引
【算法挨揍日记】day08——30. 串联所有单词的子串、76. 最小覆盖子串
给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words = [&quot;ab&quot;,&quot;cd&quot;,&quot;ef&quot;], 那么 &quot;abcdef&quot;, &quot;abefcd&quot;,&quot;cdabef&quot;, &quot;cdefab&quot;,&quot;efabcd&quot;, 和 &quot;efcdab&quot; 都是串联子串。 &quot;acdbef&quot; 不是串联子串,因为他不是任何 words 排列的连接。
389 0
每日三题-子集、单词搜索、删除无效的括号
每日三题 子集 单词搜索 删除无效的括号
85 1
每日三题-子集、单词搜索、删除无效的括号