博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度oj 题目1525:子串逆序打印
阅读量:5169 次
发布时间:2019-06-13

本文共 1887 字,大约阅读时间需要 6 分钟。

题目1525:子串逆序打印

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:3124

解决:530

题目描述:

小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩其中的连续空格为1个。

 

输入:

输入包含多个测试用例,每个测试用例的第一行是一个正整数 n,1=<n<=100000,代表卡片上字符串的长度。第二行输入长度为n的字符串(字符串仅包含小写字母和空格)。当n为0时,代表输入结束。

 

输出:

对应每个测试用例,请按照要求输出修正过的字符串。

 

样例输入:
3abc13abc   efg hij
样例输出:
cbacba gfe jih 分析:本题遇到了比较多的问题,读入一行后,我一开始是判断abc是个串之后直接将其逆序一个一个字母输出,然后 直接输出一个空格。。。试了很久案例未能全部ac,原因是:一开始没有看懂题目那句话:压缩其中的连续空格为1个。我自己编码的意思 是逆序输出一个子串后空一格,实际上不是这个意思,题意是说有多个空格则只输出一个空格,子串逆序输出,比如一开始连续三个 空格,则首先要输出一个空格。。就这个意思。 总结:题意要弄明白,需求很重要,否则很浪费时间。以下是代码:
1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 int main(){ 7 int n, i, j, flag; 8 vector
v; 9 string s, str;10 while(cin >> n){11 if(n == 0)12 break;13 v.clear();14 getchar();15 getline(cin, s);16 for(i = 0; i < n;){17 flag = 0;18 str = "";19 while(s[i] != ' ' && i < n){20 str += s[i];21 i++;22 }23 while(str == "" && s[i] == ' ' && i < n){24 flag = 1;25 i++;26 }27 if(flag == 0)28 v.push_back(str);29 else{30 str += ' ';31 v.push_back(str);32 }33 }34 for(j = v[0].length() - 1; j >= 0; j--)35 cout << v[0][j];36 for(i = 1; i < v.size(); i++){37 for(j = v[i].length() - 1; j >= 0; j--)38 cout << v[i][j];39 }40 cout << endl;41 }42 //system("pause");43 return 0;44 }

 

 

转载于:https://www.cnblogs.com/qinduanyinghua/p/6495770.html

你可能感兴趣的文章
使用 Printf via SWO/SWV 输出调试信息
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
Problem E: Automatic Editing
查看>>
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>
Mysql MHA高可用集群架构
查看>>
心急的C小加
查看>>
编译原理 First,Follow,select集求法
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
android 学习资源网址
查看>>