九度OJ-1525 子串逆序打印
- 题目描述:
-
小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩其中的连续空格为1个。
- 输入:
-
输入包含多个测试用例,每个测试用例的第一行是一个正整数 n,1=<n<=100000,代表卡片上字符串的长度。第二行输入长度为n的字符串(字符串仅包含小写字母和空格)。当n为0时,代表输入结束。
- 输出:
-
对应每个测试用例,请按照要求输出修正过的字符串。
- 样例输入:
-
3 abc 13 abc efg hij
- 样例输出:
-
cba cba gfe jih 传送门: http://ac.jobdu.com/problem.php?pid=1525此题有更简单的代码。我是为了练习数据结构,所以用栈做了。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define INIT_SIZE 100000 4 #define INCREMENT 1000 5 6 typedef struct SqStack 7 { 8 char *top; 9 char *base; 10 int stackSize; 11 }SqStack; 12 13 void Init(SqStack *s) 14 { 15 s->base = (char *)malloc(sizeof(char)); 16 if(!s->base) 17 exit(-1); 18 s->top = s->base; 19 s->stackSize = 1000; 20 } 21 22 void Push(SqStack *s, char e) 23 { 24 //栈满,再分配内存空间 25 if(s->top - s->base >= s->stackSize) 26 s->base = (char *)realloc(s->base, (INCREMENT + s->stackSize) * sizeof(char)); 27 if(!s->base) 28 exit(-1); 29 *(s->top) = e; 30 s->top++; 31 } 32 33 int StackLen(SqStack s) 34 { 35 return (s.top - s.base); 36 } 37 38 void Pop(SqStack *s, char *e) 39 { 40 if(s->top == s->base) 41 return; 42 else 43 { 44 s->top--; 45 *e = *(s->top); 46 } 47 } 48 49 int main() 50 { 51 int N; 52 SqStack sta; 53 Init(&sta); 54 char c, tmp; 55 while(scanf("%d", &N) != EOF) 56 { 57 getchar();//吃掉回车 58 tmp = getchar(); 59 while(tmp != '\n') 60 { //当没有遇到空格 61 //tmp = getchar(); 62 if(tmp == ' ') 63 { 64 //遇到空格先往前处理 65 //如果前面有非空字符,则全部弹出 66 while(StackLen(sta) != 0) 67 { 68 Pop(&sta, &c); 69 printf("%c", c); 70 } 71 printf(" ");//输出一个空格 72 //再往后处理 73 //如果还遇到空格则继续getchar()直到一个非空字符 74 while((tmp = getchar()) == ' ') 75 continue; 76 if(tmp != '\n') 77 { 78 Push(&sta, tmp); 79 tmp = getchar(); 80 } 81 } 82 else 83 { 84 Push(&sta, tmp); 85 tmp = getchar(); 86 } 87 } 88 //若栈不空 89 while(StackLen(sta)) 90 { 91 Pop(&sta, &c); 92 printf("%c", c); 93 } 94 printf("\n"); 95 } 96 return 0; 97 } 98 99 /************************************************************** 100 Problem: 1525 101 User: zetrov 102 Language: C 103 Result: Accepted 104 Time:80 ms 105 Memory:912 kb 106 ****************************************************************/
转载于:https://www.cnblogs.com/zetrov/p/4370488.html
九度OJ-1525 子串逆序打印相关推荐
- 九度OJ 1525 子串逆序打印
题目1525:子串逆序打印 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2404 解决:388 题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在 ...
- 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
题目地址:http://ac.jobdu.com/problem.php?pid=1525 题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串 ...
- 九度OJ—题目1525:子串逆序打印
题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩 ...
- python逆序打印出各位数字_Python练习题 024:求位数及逆序打印
[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...
- 1265. 逆序打印不可变链表
1265. 逆序打印不可变链表 给您一个不可变的链表,使用下列接口逆序打印每个节点的值: ImmutableListNode: 描述不可变链表的接口,链表的头节点已给出. 您需要使用以下函数来访问此链 ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )
文章目录 一.借助 递归函数操作 逆序打印字符串 二.完整代码示例 一.借助 递归函数操作 逆序打印字符串 递归需要掌握下面 222 个点 : 参数入栈模型 : 第 111 次 , "sdh ...
- 算法习题---线性表之单链表逆序打印
一:题目 逆序打印单链表中的数据,假设指针指向单链表的开始结点 二:思路 1.可以使用递归方法,来进行数据打印 2.可以借助数组空间,获取长度,逆序打印数组 3.若是可以,对链表数据使用头插法,逆序排 ...
- 每日程序C语言23-求一个正整数的位数并逆序打印
题目: 给一个不多于5位的正整数,要求:一.求出它是几位数,二.逆序打印出各位数字 程序分析 可以使用数组来存放我们输入的数字,而且在存放前,我们先进行处理,按照要输出的顺序存放进去 主要代码 int ...
- 【链表】逆序打印链表
1 public class Main { 2 3 // 逆序打印链表 4 public void reversePrint(Node node) { 5 if (node == null){ 6 r ...
最新文章
- 【笔记】jstree插件的基本使用
- 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
- Codeforces Round #701 (Div. 2) C. Floor and Mod 数学分块
- python偏函数和高阶函数_【Python入门】8.高阶函数之 匿名函数和偏函数
- EduSoHo精品在线教育点播系统网站源码
- 设置webstorm实时预览看这一篇就够了,5分钟解决!!
- Sharepoint 站点模板和站点定义、定制站点定义
- sas编程技术教程 人大经济论坛sas培训
- HTML查看器PC,PE文件查看器(PeViewer)
- 清华大学计算机夏文韬,太猛了--南京外国语学校2007届高三毕业生去向
- 如何识别服务器连接的偶发故障?
- Xilinx UCF约束语法一
- 计算机教学研修心得英语,研修心得体会(通用10篇)
- 可以嵌入ppt的课堂点名器_智慧校园--嵌入式高清全自动录播子系统
- 分账系统多少钱?是如何收费的?
- 新春寄语——令人期待的2018
- Windows10系统VScode连接腾讯云Linux服务器
- java sleep 抛出异常_PowerMockito模拟Thread.sleep()时抛出中断异常的场景
- 用Javascript开发《三国志曹操传》-零部件开发(四)-用地图块拼成大地图
- nport虚拟串口服务器,如何安装配置MOXA NPort串口服务器?