PAT-A 1077. Kuchiguse (20)
题目链接在此。
题意
给定N个字符串,求相同后缀并输出;若果没有后缀,则输出“nai”。
思路
为了方便,现将输入的字符串反转,这样问题就转变成求字符串的相同前缀了。
我们用min_len记录所有字符串的最小长度,之后枚举所有字符串在[0,min_len)内的字符,判断相同位置的字符是否相同,如果相同,则写入suffix[]字符数组(用整型变量num来控制suffix下标,即保存的字符个数),如果不同,则停止枚举即可。
最后判断num,num等于0则输出nai,否则倒序输出所有字符即可。
当然,也可以不需要把相同的字符放入suffix数组,只需要有一个变量在枚举的过程中记住前缀字符串的最大下标即可,这样之后也可以输出。
有些需要注意的地方在代码注释中已经标注。
AC代码
#include<stdio.h>
#include<string.h>//倒转字符串
void Reverse(char str[], int len){for(int i = 0; i < len/2; i++){int temp = str[i];str[i] = str[len-1-i];str[len-1-i] = temp;}
}int main(){int N;scanf("%d",&N);getchar(); //吸收换行 char speak[101][257];int min_len=257, len; //min_len保存N个字符串的最小长度 for(int i = 0; i < N; i++){gets(speak[i]);len = strlen(speak[i]);Reverse(speak[i], len); //更新min_lenif(len < min_len){min_len = len;} } //让每一个字符串的相同位的字符相比较 char suffix[257];int num = 0, j;for(int i = 0 ; i < min_len; i++){for(j = 1; j < N; j++){if(speak[j][i] != speak[j-1][i]) break; //不同,退出j循环 }if(j == N){ //j循环正常退出,则speak[][i]位相同,写进suffixsuffix[num++] = speak[0][i]; //不能写成speak[j][i],此时j已经越界,第一维写成0~N-1都可以,因为相同 } else{ //j循环时break出来的,则i循环也break即可,因为不相同了 break;}}//输出结果if(num==0){ //没有suffix printf("nai\n");} else{ //有suffix ,倒序输出suffix数组 for(int i = num-1; i >= 0; i--){printf("%c",suffix[i]);} } return 0;
}
PAT-A 1077. Kuchiguse (20)相关推荐
- PAT (Advanced) 1077. Kuchiguse (20)
随便写了个,比较啰嗦. 下次有机会找找好的方法. #include <iostream> #include <string> #include <cstring> ...
- PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...
- 1077.Kuchiguse (20)
1077.Kuchiguse (20) pat-al-1077 2017-01-27 本题无坑 方法:把字符串一个一个读进来,每个都逆序一下,并且在这个过程中记录一下最短的字符串的长度:然后开始对每个 ...
- 1077. Kuchiguse (20)-PAT甲级真题
The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...
- PAT甲题题解-1077. Kuchiguse (20)-找相同后缀
#include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...
- 1077.Kuchiguse(20分)
The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...
- 1077. Kuchiguse (20)
题目如下: The Japanese language is notorious for its sentence ending particles. Personal preference of s ...
- 1077 Kuchiguse (20分)
并不是很复杂的判断尾部相同公共部分. 注意要保证最长相同子串要小于等于最短字符串长度: 最后一个测试点,也就是测试点4就是这种情况,其中一个字符串刚好等于公共字符串. 附本人AC代码: #includ ...
- PAT 1077. Kuchiguse
这个题目写不出,完全是C++语法不熟, (1)读入一行字符串:getline(cin, s); (2)字符串的反转:reverse(s.begin(), s.end()); (3)字符串取出某个字符: ...
最新文章
- 顺序结构,判断结构 if,switch
- TX2更新源失败的问题
- UBUNTU 用户及用户组管理 修改用户和主机名
- [Swift]LeetCode1020. 飞地的数量 | Number of Enclaves
- 14种方法助你参与开源项目
- python-循环语句基础知识
- Docker启动MySql后连接报1251处理方法
- 企业文档管理_为什么这么多企业文档如此糟糕?
- php html 停止工作,换行符php和html无法正常工作
- WMI服务故障,VBS脚本无法运行错误
- Ubuntu Server Download
- 【图像边缘检测】基于matlab GUI Sobel+Prewitt+Canny算子图像边缘检测(带面板)【含Matlab源码 1045期】
- MCMC算法学习总结
- 美国次贷危机[百科]
- python execute传参_把参数传递给命令行.execute()
- Linux系统 查看 Vendor id 和Device id
- 二叉树no与n2关系数学证明
- 计算机硬件英语词汇,计算机硬件英语词汇
- 标段(包)分类 字典sql
- 【OpenGL基础】|| OpenGL渲染过程介绍
热门文章
- 咖说 | 硅谷“加密黑帮”大揭秘:一览 37 家科技圈区块链初创企业
- [转载]计算机视觉研究群体及专家主页汇总_拔剑-浆糊的传说_新浪博客
- 【产品】 产品设计:ABS塑料和铝合金的粘接胶水品类详解
- Xcode6恢复出厂设置(reset Xcode to its original state)
- 嵌入式系统学习整理-FourDay-原码反码补码详解
- 浅析scala传名调用和传值调用,: = 与() : =
- 24、25届如何准备实习?
- [微软官方]SQLSERVER的兼容级别
- 基于JAVA线上远程教学及自主学平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 通用模块用于静态电流测量