1077 Kuchiguse (20 分)求字符串最长相同后缀

1077 Kuchiguse (20 分)

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思路  使用递归    1、如果下标超出,返回    2、如果某一个字符串中后缀字符不同,返回    3、添加这个字符,递归比较下一个
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<cmath>
#include<climits>
using namespace std;
vector<string>vt;
string result="";
void findSuffix(int index)
{
    if(index>=vt[0].size())
        return;
    char c=vt[0].at(vt[0].size()-index-1);
    for(int i=0; i<vt.size(); i++)
    {
        if(index>=vt[i].size())
            return;
        if(vt[i].at(vt[i].size()-index-1)!=c)
                return;

    }
    result=c+result;
   // cout<<result<<endl;
    findSuffix(index+1);
}

int main()
{
    int n;
    scanf("%d",&n);
    vt.resize(n);
    getchar();
    for(int i=0; i<n; i++)
    {

        getline(cin,vt[i]);
    }
    findSuffix(0);
    if(result.size()==0)
        cout<<"nai"<<endl;
    else
        cout<<result;
    return 0;
}
 

原文地址:https://www.cnblogs.com/zhanghaijie/p/10335511.html

时间: 2024-11-05 12:16:00

1077 Kuchiguse (20 分)求字符串最长相同后缀的相关文章

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

题意: 输入一个正整数N(<=100),接着输入N行字符串.输出N行字符串的最长公共后缀,否则输出nai. 代码: #include<bits/stdc++.h>using namespace std;string s[107];int length[107];char ans[307];int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin>>n; cin.igno

1077 Kuchiguse (20分)

1. 题目 2. 思路 比较两个字符串获取相同尾部 用尾部去和第三个字符串比较 如果尾部长度为0退出 3. 注意点 读入一行中间有空格,PTA不支持gets函数.解决方法看标题5.tip 一般时间少于400ms的题目都会有超时问题,注意方法的时间复杂度 getline()之气要用getchar()读入一个'\n' 相同字符串的前面的空白字符应该去除(测试中没有这个) 4. 代码 #include<cstdio> #include<algorithm> #include<str

1077. Kuchiguse (20)【字符串处理】——PAT (Advanced Level) Practise

题目信息 1077. Kuchiguse (20) 时间限制100 ms 内存限制65536 kB 代码长度限制16000 B 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 prefere

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

#include <iostream> #include <cstdio> #include <algorithm> #include <string.h> #include <cmath> using namespace std; /* 找最长相同后缀 */ const int maxn=105; char str[maxn][300]; char ans[300]; int len[maxn]; int main() { int n; int

PAT 1077 Kuchiguse (20)

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 artistic

1077. Kuchiguse (20)

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 artistic

1112 Stucked Keyboard (20分)(字符串)

题意: 输入一个正整数K(1<K<=100),接着输入一行字符串由小写字母,数字和下划线组成.如果一个字符它每次出现必定连续出现K个,它可能是坏键,找到坏键按照它们出现的顺序输出(相同坏键仅输出一次,数据保证必定存在坏键),接着输出将坏键修好后原本的字符串(K个连续坏键只输出一次). trick: 测试点1答案错误原因:出现次数为K的倍数而不是大于等于K 测试点2,3错误原因:输出原字符串时没有检验最后一段连续相同字符是否为坏键(循环当中没有检验这一段) AAAAAccepted code:

PAT A1112 Stucked Keyboard (20 分)——字符串

On a broken keyboard, some of the keys are always stucked. So when you type some sentences, the characters corresponding to those keys will appear repeatedly on screen for k times. Now given a resulting string on screen, you are supposed to list all

PAT (Advanced Level) 1077. Kuchiguse (20)

最长公共后缀.暴力. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<stack> #include<queue> #include<string> #include<algorithm> using namespace std; char s[200][300];