题目大意
给你一段英文,以换行结束。
再给你两个单词,要你把那段英文中所有的那个单词都替换为下面那个单词。
区分大小写
解
简单的字符串函数使用。这里借助了s.erase(),s.find(),s.insert()。三个函数
(分别为清除、查找、插入)
注意输入…
在YbtOj测的90分。貌似是因为输入出bug了(?)
出bug代码
bug代码1:
getline(cin, s);
cin >> s1 >> s2;
s = " " + s + " ";
bug代码2:
c = getchar();
while (c != '\n') {
s = s + c;
c = getchar();
}
s = " " + s + " ";
cin >> s1 >> s2;
【不解】。反正改成下面的就对了。
代码
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
string s, s1, s2;
char c;
int main() {
c = getchar();
while ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == ' ') {
s = s + c;
c = getchar();
}
s = " " + s + " ";
//前后加空格,便于分辨文段中所找到的字串是否是一个单词,而不是单词的一部分
cin >> s1 >> s2;
s1 = " " + s1 + " ";
s2 = " " + s2 + " ";
while (s.find(s1, 0) != string::npos) { //能找到
int k = s.find(s1, 0); //替换
s.erase(k, s1.size());
s.insert(k, s2);
}
cout << s.substr(1, s.size() - 1) << endl; //去空格输出
}