题目链接在此。

题意

给定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)相关推荐

  1. PAT (Advanced) 1077. Kuchiguse (20)

    随便写了个,比较啰嗦. 下次有机会找找好的方法. #include <iostream> #include <string> #include <cstring> ...

  2. PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...

  3. 1077.Kuchiguse (20)

    1077.Kuchiguse (20) pat-al-1077 2017-01-27 本题无坑 方法:把字符串一个一个读进来,每个都逆序一下,并且在这个过程中记录一下最短的字符串的长度:然后开始对每个 ...

  4. 1077. Kuchiguse (20)-PAT甲级真题

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  5. PAT甲题题解-1077. Kuchiguse (20)-找相同后缀

    #include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...

  6. 1077.Kuchiguse(20分)

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  7. 1077. Kuchiguse (20)

    题目如下: The Japanese language is notorious for its sentence ending particles. Personal preference of s ...

  8. 1077 Kuchiguse (20分)

    并不是很复杂的判断尾部相同公共部分. 注意要保证最长相同子串要小于等于最短字符串长度: 最后一个测试点,也就是测试点4就是这种情况,其中一个字符串刚好等于公共字符串. 附本人AC代码: #includ ...

  9. PAT 1077. Kuchiguse

    这个题目写不出,完全是C++语法不熟, (1)读入一行字符串:getline(cin, s); (2)字符串的反转:reverse(s.begin(), s.end()); (3)字符串取出某个字符: ...

最新文章

  1. 顺序结构,判断结构 if,switch
  2. TX2更新源失败的问题
  3. UBUNTU 用户及用户组管理 修改用户和主机名
  4. [Swift]LeetCode1020. 飞地的数量 | Number of Enclaves
  5. 14种方法助你参与开源项目
  6. python-循环语句基础知识
  7. Docker启动MySql后连接报1251处理方法
  8. 企业文档管理_为什么这么多企业文档如此糟糕?
  9. php html 停止工作,换行符php和html无法正常工作
  10. WMI服务故障,VBS脚本无法运行错误
  11. Ubuntu Server Download
  12. 【图像边缘检测】基于matlab GUI Sobel+Prewitt+Canny算子图像边缘检测(带面板)【含Matlab源码 1045期】
  13. MCMC算法学习总结
  14. 美国次贷危机[百科]
  15. python execute传参_把参数传递给命令行.execute()
  16. Linux系统 查看 Vendor id 和Device id
  17. 二叉树no与n2关系数学证明
  18. 计算机硬件英语词汇,计算机硬件英语词汇
  19. 标段(包)分类 字典sql
  20. 【OpenGL基础】|| OpenGL渲染过程介绍

热门文章

  1. 咖说 | 硅谷“加密黑帮”大揭秘:一览 37 家科技圈区块链初创企业
  2. [转载]计算机视觉研究群体及专家主页汇总_拔剑-浆糊的传说_新浪博客
  3. 【产品】 产品设计:ABS塑料和铝合金的粘接胶水品类详解
  4. Xcode6恢复出厂设置(reset Xcode to its original state)
  5. 嵌入式系统学习整理-FourDay-原码反码补码详解
  6. 浅析scala传名调用和传值调用,: = 与() : =
  7. 24、25届如何准备实习?
  8. [微软官方]SQLSERVER的兼容级别
  9. 基于JAVA线上远程教学及自主学平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  10. 通用模块用于静态电流测量