-
题目大意:很多人说日语喜欢在句末加上自己的口头禅,我们要找出这个人的口头禅(每一句句末相同的部分)。
-
思路:找出每一句最后相同的部分
-
知识点:
- getline(cin, str)
- for有循环内多个判断条件
- reverse(a.begin(), a.end):逆序(或反转),多用于字符串、数组、容器。需
#include <algorithm>
-
代码:
#include <iostream> #include <string> using namespace std; int main(){ int n; string a, b; cin >> n; // 输入n后会有一个`\n`,会导致getline()捕获这个`\n`后中断,所以要加cin.ignore(); cin.ignore(); for(int i = 0; i < n; i++){ string sim, temp; if(i == 0){ getline(cin, a); b = a; continue; } getline(cin, a); for(int j = b.length() - 1, l = a.length() - 1; j >= 0 && l >= 0 && b[j] == a[l]; j--, l--) temp += b[j]; // j--!!!不是j++!!! for(int p = temp.length() - 1; p >= 0; p--) sim += temp[p]; // 翻转,可以直接用reverse(temp.begin(), temp.end()) b = sim; } if(b == "") cout << "nai"; else cout << b; return 0; }
-
总结:
-
只有C++有
getline(cin, str)
,C语言没有 -
cin >> n;
后如果要用getline(cin, str)
,需要先cin.ignore();
:- 输入n后会有一个
\n
,会导致getline()捕获这个\n
后中断,所以要加cin.ignore();
- 输入n后会有一个
-
for有循环内多个判断条件:注意
i++
或者i--
! -
reverse(a.begin(), a.end):逆序(或反转),多用于字符串、数组、容器。需
#include <algorithm>
。- 用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数无返回值。
-
【PAT】1077 Kuchiguse (20 分)
最新推荐文章于 2022-10-15 20:30:27 发布