The Japanese language is notorious for its sentence ending particles. Personal preference of such particles can be considered as a reflection of the speaker’s personality. Such a preference is called “Kuchiguse” and is often exaggerated artistically in Anime and Manga. For example, the artificial sentence ending particle “nyan~” is often used as a stereotype for characters with a cat-like personality:

  • Itai nyan~ (It hurts, nyan~)
  • Ninjin wa iyada nyan~ (I hate carrots, nyan~)

Now given a few lines spoken by the same character, can you find her Kuchiguse?

Input Specification:

Each input file contains one test case. For each case, the first line is an integer N (2≤N≤100). Following are N file lines of 0~256 (inclusive) characters in length, each representing a character’s spoken line. The spoken lines are case sensitive.

Output Specification:

For each test case, print in one line the kuchiguse of the character, i.e., the longest common suffix of all N lines. If there is no such suffix, write nai.

Sample Input 1:

3
Itai nyan~
Ninjin wa iyadanyan~
uhhh nyan~

Sample Output 1:

nyan~

Sample Input 2:

3
Itai!
Ninjinnwaiyada T_T
T_T

Sample Output 2:

nai

题目要求是求相同的字符串后缀

一开始的解题思路是:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	int N;
	int ans=0;
	scanf("%d",&N);
	int minlen = 256;
	char a[101][300];
	getchar();
	for(int i=0;i<N;i++)
	{
		fgets(a[i],256,stdin);
		int len = strlen(a[i]);
		if(minlen>len) minlen =len;
		for(int j=0;j<minlen/2;j++)//reverse
		{
			char temp;
			temp = a[i][j];
			a[i][j]=a[i][-j+len-1];
			a[i][-j+len-1]=temp;
		}
	}
	for(int i=1;i<minlen;i++)
	{
		bool flag=true;
		char c = a[0][i];
		for(int j = 1;j<N;j++)
		{
			if(c!=a[j][i])
			{
				flag = false;
				break;
			}
		}
		if(flag) ans++;
		else break;
	}
	if(ans)
	{
		for(int i=ans-1;i>=1;i--)
		{
			printf("%c",a[0][i]);
		}

	}
	else
	{
		printf("nai");
	}

	return 0;

}

感觉有点混乱

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
 	int n;
 	scanf("%d\n", &n);
 	string ans;
 	for(int i = 0; i < n; i++) {
 		string s;
 		getline(cin, s);
		 int lens = s.length();
 		reverse(s.begin(), s.end());
		 if(i == 0) {
 				ans = s;
		 		continue;
		 }
        else {
 				int lenans = ans.length();
				int minlen = min(lens, lenans);
 				for(int j = 0; j < minlen; j++) {
 						if(ans[j] != s[j]) {
 						ans = ans.substr(0, j);
 						break;
 						}
		 			}
		 		}
 }
 reverse(ans.begin(), ans.end());
 if (ans.length() == 0)
     ans = "nai";
cout << ans;
return 0;
}

以上的解法更加简便

使用到的新鲜函数是:getline, reverse, min

1. getline

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

字符串的输入方式之一,特点是遇到空格不停止输入

2. reverse

反转范围中元素的顺序[first,last)

3. min

输出两数中较小的一个,同理max是较大那个

最新文章

  1. 关于Spring
  2. 使用IConfigurationSectionHandler在web.config中增加自定义配置
  3. 改善EF代码的方法(下)
  4. awk基础 [马哥视频]
  5. web service1简单的例子用jdk自带的类
  6. PHP环境部署问题集合
  7. gdb经常使用的命令
  8. debug经验汇总
  9. Jdk1.6 JUC源码解析(6)-locks-AbstractQueuedSynchronizer
  10. Web设计思想——渐进增强
  11. CSS学习笔记day1
  12. 合并两个list,不包含重复的对象
  13. iOS中 MediaPlayer framework实现视频播放 韩俊强的博客
  14. SDL 开发实战(七): SDL 多线程与锁机制
  15. 动态HTMl处理
  16. Linux&#160;操作系统主机名变成bogon怎么解决?
  17. LVS+Keepalived+Mysql+主主数据库架构[2台]
  18. idea15 生成mybatis代码
  19. xml的xsi:type序列化和反序列化
  20. ConEmu配置task的脚本

热门文章

  1. Toolbar融入状态栏实现沉浸式遇到的问题
  2. Transaction Managament(事务管理二、Spring事务)
  3. HZNU-ACM寒假集训Day8小结 最小生成树
  4. DevOps专题|基础Agent部署系统
  5. (7)opencv图片内部的基本处理
  6. [ACTF2020 新生赛]Include
  7. POJ 1416:Shredding Company
  8. Python笔记_第五篇_Python数据分析基础教程_相关安装和版本查看
  9. MYSQL连接不上100061错误
  10. Redis主从复制以及主从复制原理