1077 Kuchiguse (20分)

Posted d-i-p

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1077 Kuchiguse (20分)相关的知识,希望对你有一定的参考价值。

1. 题目

技术图片

2. 思路

  1. 比较两个字符串获取相同尾部
  2. 用尾部去和第三个字符串比较
  3. 如果尾部长度为0退出

3. 注意点

  1. 读入一行中间有空格,PTA不支持gets函数。解决方法看标题5.tip
  2. 一般时间少于400ms的题目都会有超时问题,注意方法的时间复杂度
  3. getline()之气要用getchar()读入一个‘ ‘
  4. 相同字符串的前面的空白字符应该去除(测试中没有这个)

4. 代码

#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<iostream> 

// 13:28-14:20
using namespace std;

#define MAXN 101

int n;
string s[MAXN];

string same(string end, string s2){
    if(end.length() > s2.length()){
        swap(end, s2);
    }
    for(int i=end.length();i>0;i--){
        if(s2.substr(s2.length()-i, i) == end.substr(end.length()-i, i)){
            return end.substr(end.length()-i, i);
        }
    }
    return "";
}

int main(){
    scanf("%d", &n);
    getchar();
    string temp;
    for(int i=0;i<n;i++){
        getline(cin, temp);
        s[i] = temp;
    }
    string end = s[0];
    for(int i=1;i<n;i++){
        end = same(end, s[i]);
        if(end.length() == 0){
            printf("nai");
            return 0;
        }
    }
    printf("%s", end.data());
}

5. tip

  1. 程序时间一般为400ms. 如果看到少于400ms, 使用暴力法一般都会超时
  2. PTA不能使用itoa(),gets()
    对于gets()函数,我们可以使用getline()函数代替
// 必须头文件
    #include<string>
    #include<iostream>

// 使用方法
    string dst;
    getline(cin, dst); //默认'
'终止, 可以用第三个参数指定其他

以上是关于1077 Kuchiguse (20分)的主要内容,如果未能解决你的问题,请参考以下文章

1077 Kuchiguse (20分)

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

[PAT] 1077 Kuchiguse (20 分)Java

1077 Kuchiguse (20 分)难度: 一般 / 字符串模拟

PAT 1077 Kuchiguse

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