从键盘输入1个字符串和m个字符串,判断第1个字符串是否是m个字符串按逆序连接形成的字符串的前缀,即假设字符串1和字符串2的长度分别是k和n(k<=n),如果字符串1中的k个字符和字符串2中的前k个字符相同(字母不区分大小写),则称字符串1是字符串2的前缀
a. 输入和输出示例:
第1-7行是从键盘输入的数据,其中第2行是m的值,第8行是输出结果
i. 是前缀:第3-7行的字符串按逆序连接后得到字符串 "ilovedlutandChina",第1行的字符串 "IloveDLUT"和字符串 "ilovedlutandChina" 的前9个字符相同,输出"Yes"
ii. 不是前缀:第3-7行的字符串按逆序连接后得到字符串 "IloveChinaandDLUT",第1行的字符串 "IloveDLUT"和字符串 "IloveChinaandDLUT" 的前9个字符不同,输出"No"
该回答引用chatgpt:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int m;
string s1, s2;
cin >> s1 >> m;
string s = "";
for (int i = 0; i < m; i++) {
cin >> s2;
transform(s2.begin(), s2.end(), s2.begin(), ::tolower);
s = s2 + s;
}
transform(s1.begin(), s1.end(), s1.begin(), ::tolower);
if (s1 == s.substr(0, s1.size())) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
输入时首先读入第一个字符串和一个整数m,然后循环读入m个字符串,将它们按逆序连接在一起,存储在一个新的字符串s中。接着将第一个字符串转换为小写,再将s的前缀与第一个字符串比较。如果相同,输出"Yes",否则输出"No"。