PAT_甲級_1077 Kuchiguse (20point(s)) (C++)【簽到題/字符串處理/最長公共後綴】

目錄

1,題目描述

 題目大意

2,思路

3,AC代碼


1,題目描述

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

 題目大意

找出一個人說出的每段話中,共同帶有的最長後綴

只要有一段話沒有此共同後綴,就不算。

 

2,思路

  1. 聲明字符串類型ans和s。ans存放最終結果,初始爲第一行字符
  2. s接受第二行的字符。將ans與s的末尾字符一一對比,截取相同的部分重新賦值給ans;
  3. 重複2,直至所有數據接收完畢;
  4. 根據ans.size()判斷輸出;

 

3,AC代碼

#include<bits/stdc++.h>
using namespace std;

int main(){
#ifdef ONLINE_JUDGE
#else
    freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE

    string ans, s;
    int N;
    scanf("%d\n", &N);
    getline(cin, ans);            //接受一行字符
    for(int i = 1; i < N; i++){
        getline(cin, s);
        int a = ans.size() - 1, b = s.size() - 1;
        while(a >= 0 && b >= 0 && ans[a] == s[b]){
            a--;b--;
        }
        ans = ans.substr(a + 1);  //提取末尾相同部分
    }
    if(ans.size() == 0)
        cout<<"nai";
    else cout<<ans;
    return 0;
}

 

一發入魂。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章