OpenJudge就算概论-过滤多余的空格
/*===================================== 过滤多余的空格 总时间限制: 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 }
看一个简单偷懒的实现:
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 char a[205]; 5 while(scanf("%s",a)!=EOF) 6 { 7 printf("%s ",a); 8 } 9 return 0; 10 }
分类:
005-字符串
, OJ-OpenJudge
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App