zoukankan      html  css  js  c++  java
  • 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 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

    题目大意:找出字符串末尾想的的部分;
    思路:因为每个字符串的长度不一致,所以在输入的时候, 把每一个字符串颠倒一下
    输入的时候,找到最短字符串的长度
    遍历每个字符串,查看有多少个连续的相等的字符串;
    注意点:在输入整数n后必须用cin.get()把换行符吸收掉;否则会被当做第一个字符串输入
    在末尾相等子串的长度的时候, 必须n个字符串都相等, 才能把长度+1
     1 #include<iostream>
     2 #include<string>
     3 #include<algorithm>
     4 using namespace std;
     5 int main(){
     6   int n, i;
     7   cin>>n;
     8   cin.get();
     9   string s[100];
    10   int minn=99999999;
    11   for(i=0; i<n; i++){
    12     getline(cin, s[i]);
    13     reverse(s[i].begin(), s[i].end());
    14  
    15     if(s[i].size()<minn) minn = s[i].size();
    16   }
    17   int cnt=0, f=1;
    18   for(i=0; i<minn&&f; i++){
    19     f = 1;
    20     for(int j=0; j<n-1; j++){
    21         if(s[j][i]!=s[j+1][i]){
    22             f=0;
    23               break;
    24         }
    25     }
    26     if(f) cnt++;
    27   }
    28  
    29   if(cnt==0) cout<<"nai"<<endl;
    30   else{
    31     s[0] = s[0].substr(0, cnt);
    32     reverse(s[0].begin(), s[0].end());
    33     cout<<s[0]<<endl;
    34   }
    35   return 0;
    36 }
    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    网站开发动静分离
    如何前后端分离?
    设置HTML编码为UTF-8
    数据库索引&数据页
    spring中的BeanFactory和FactoryBean的区别与联系
    Java可重入锁与不可重入锁
    abo dto属性验证的坑
    小程序如何去掉button组件的边框
    asp.net core使用gzip
    npm总结
  • 原文地址:https://www.cnblogs.com/mr-stn/p/9230599.html
Copyright © 2011-2022 走看看