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是较大那个

PAT甲级——1077.Kuchiguse(20分)的更多相关文章

  1. PAT 甲级 1077 Kuchiguse (20 分)(简单,找最大相同后缀)

    1077 Kuchiguse (20 分)   The Japanese language is notorious for its sentence ending particles. Person ...

  2. PAT Advanced 1077 Kuchiguse (20 分)

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

  3. PAT 甲级 1035 Password (20 分)(简单题)

    1035 Password (20 分)   To prepare for PAT, the judge sometimes has to generate random passwords for ...

  4. PAT 甲级 1061 Dating (20 分)(位置也要相同,题目看不懂)

    1061 Dating (20 分)   Sherlock Holmes received a note with some strange strings: Let's date! 3485djDk ...

  5. 【PAT甲级】1077 Kuchiguse (20 分)(cin.ignore()吃掉输入n以后的回车接着用getine(cin,s[i])输入N行字符串)

    题意: 输入一个正整数N(<=100),接着输入N行字符串.输出N行字符串的最长公共后缀,否则输出nai. AAAAAccepted code: #include<bits/stdc++. ...

  6. PAT甲级——1035 Password (20分)

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  7. PAT 甲级 1077 Kuchiguse

    https://pintia.cn/problem-sets/994805342720868352/problems/994805390896644096 The Japanese language ...

  8. PAT甲级——1061 Dating (20分)

    Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh4hhGE 2984akDfkkkkg ...

  9. PAT甲级——1005.SpellItRight(20分)

    Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output e ...

随机推荐

  1. mybatis环境搭建(eclipse,idea)

    基于java配置SSM,eclipse 新建maven,web项目 .... 项目结构: jar包 pom.xml spring和DispatcherServlet上下文 public class D ...

  2. 2.6 UI控件与后台联系实现

    完成的结果如下 : 当点击 左按钮时 最上边的显示栏更改为左 反之则为右  点击开关显示为开或者关 下边两个为显示加载的界面 在输入栏输入数值可以控制进度条的百分比并且显示在最上边 点击图片一二切换图 ...

  3. HttpServlet中文乱码问题

    客户端提交数据给服务器端(Requset) 如果数据中带有中文的话,有可能会出现乱码情况,那么可以参照以下方法解决. 如果是GET方式 1.代码转码 String username = request ...

  4. jobs|ps|杀死nohup

    方法1:如果没有退出客户端界面,可以先通过 “jobs” 命令查看程序是否在运行,此时只有序号没有PID号:输入命令 “jobs -l” 会显示程序的PID号,然后通过 “kill -9 PID”杀死 ...

  5. 基于python的爬虫流程图(精简版)

    网址: https://www.processon.com/view/link/5e1148b8e4b07db4cfa9cf34 如果链接失效,请及时反馈(在评论区评论),博主会及时更新

  6. [Python Cookbook]Pandas: How to increase columns for DataFrame?Join/Concat

    1. Combine Two Series series1=pd.Series([1,2,3],name='s1') series2=pd.Series([4,5,6],name='s2') df = ...

  7. Spring Data JPA简单查询接口方法速查

    下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.(1)先按照功能进行分类 ...

  8. 微信小程序官方示例 官方weui-wxss下载于安装 详解

    1.小程序示例源码:https://github.com/wechat-miniprogram/miniprogram-demo 2.微信 weui下载地址:https://github.com/we ...

  9. h5-自定义视屏播放器

    1.html代码 <h3 class="playerTitle">视屏播放器</h3> <div class="player"&g ...

  10. 第 10 章 gdb

    一.参考网址 1.linux c编程一站式学习 二.命令列表 1.图1: 2.图2: 3.图3: 三.重点摘抄 1.断点与观测点的区别 我们知道断点是当程序执行到某一代码行时中断,而观察点是当程序访问 ...