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 }

 

相关文章
|
4月前
|
算法
算法编程(二十七):千位分隔数
算法编程(二十七):千位分隔数
59 0
算法编程(二十七):千位分隔数
|
4月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
51 0
|
4月前
|
算法
算法编程(二十五):检查单词是否为句中其他单词的前缀
算法编程(二十五):检查单词是否为句中其他单词的前缀
56 0
|
10月前
|
数据采集 Java 机器人
根据正则表达式截取字串符,这个办法打败99%程序员
作为一名程序员,常常会在以下情况下使用函数功能根据正则表达式截取字符串:
|
11月前
|
C语言
【Leetcode-1638.统计只差一个字符的字串数目(C语言)】
【Leetcode-1638.统计只差一个字符的字串数目(C语言)】
39 0
|
4月前
|
搜索推荐 算法 程序员
第六十一练 字符串匹配 - 精确匹配
第六十一练 字符串匹配 - 精确匹配
31 3
|
存储 Cloud Native Go
【刷题日记】1455. 检查单词是否为句中其他单词的前缀
【刷题日记】1455. 检查单词是否为句中其他单词的前缀
|
Cloud Native
【刷题日记】316. 去除重复字母
本次刷题日记的第 42 篇,力扣题为:316. 去除重复字母 ,中等
|
11月前
|
算法 索引
【算法挨揍日记】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 排列的连接。
381 0
|
11月前
|
存储 算法 索引
【算法挨揍日记】day07——904. 水果成篮、438. 找到字符串中所有字母异位词
题目描述: 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了
344 0