PAT 1077. Kuchiguse (20)(求最长公共后缀)(差一分)

来源:互联网 发布:墨迹天气的数据来源 编辑:程序博客网 时间:2024/05/19 04:05

官网

1077. Kuchiguse (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
HOU, Qiming
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.注意:

  1. 2aa aa aa aa的输出是aa aa,不是aa

待修改代码(差一分)

#include<iostream>#include<string>#include<cstdio>using namespace std;string a[101];int len[101];int n;int main(){  cin >> n;  cin.ignore();  for(int i=0;i<n;i++){    getline(cin,a[i]);    len[i] = a[i].length();  }  int k=0;  bool flag = true;  int i = 0;  //求最长到哪了,倒着看  while(1){    char tem = a[0][len[0]-1-k];    for(i=1;i<n;i++){      if(k>len[i]-1){        flag = false;        break;      }      if(a[i][len[i]-1-k]!=tem){        flag = false;        break;      }    }    if(flag == false){      break;    }    if (k<len[0]-1) {      k++;    } else {      break;    }  }  string tem_out;  if(k==0){    if(i==n){      cout << a[0][len[0]-1]<<endl;    }else{      cout << "nal" << endl;    }  }else {    if (i==n) {      tem_out = a[0].substr(len[0]-k-1,k+1);      int l = 0;      //去掉前面的空格      while(tem_out[l]==' ')        l++;      cout << tem_out.substr(l)<<endl;      //cout << a[0].substr(len[0]-k-1,k+1)<<endl;    } else {      tem_out = a[0].substr(len[0]-k,k);      int l = 0;      while(tem_out[l]==' ')        l++;      cout << tem_out.substr(l)<<endl;      //cout << a[0].substr(len[0]-k,k)<<endl;    }  }//  cout << i << endl;//  cout << k << endl;  return 0;}
0 0
原创粉丝点击