码迷,mamicode.com
首页 > 其他好文 > 详细

1077 Kuchiguse (20分)

时间:2020-03-06 15:06:44      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:efi   inf   swap   har   字符   问题   cin   sam   不能   

1. 题目

技术图片

2. 思路

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

3. 注意点

  1. 读入一行中间有空格,PTA不支持gets函数。解决方法看标题5.tip
  2. 一般时间少于400ms的题目都会有超时问题,注意方法的时间复杂度
  3. getline()之气要用getchar()读入一个‘\n‘
  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); //默认'\n'终止, 可以用第三个参数指定其他

1077 Kuchiguse (20分)

标签:efi   inf   swap   har   字符   问题   cin   sam   不能   

原文地址:https://www.cnblogs.com/d-i-p/p/12426416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!