题目来自乐知OI,侵删
题目描述
乐乐写完一段话后发现把一个英语单词拼写错了,他想知道错误的单词一共出现了几次,并且全部自动改正成正确的单词,你能编程帮他解决这个问题吗?
输入
一段英文。(单词之间、单词和标点之间均用空格隔开)
接下来一行是空格隔开的两个单词,第一个是拼写错误的单词,第二个是正确的单词。 (两个单词字母均为小写)
接下来一行是空格隔开的两个单词,第一个是拼写错误的单词,第二个是正确的单词。 (两个单词字母均为小写)
输出
第一行一个整数,表示错误的次数;
第二行输出改正后的全文。
第二行输出改正后的全文。
样例输入
Cann you cann a cann like a canner cans a cann ?
cann can
样例输出
4 Can you can a can like a canner cans a can ?
#include<bits/stdc++.h> using namespace std; int main() { int sum = 0; string s, x, y, z, ans; getline(cin,s); cin >> x >> y; int len = s.size(); int l = 0; for (int i = 0; i < len; i++) { if (s[i] == ' ' || i == len - 1) { string temp; if (i == len-1) temp = s.substr(l,len-l); else temp = s.substr(l,i-l); bool flag = true; if (x.size() != temp.size())flag = false; for (int j = 0; flag && j < x.size(); j++) { if (tolower(temp[j]) != x[j]) { flag = false; break; } } if(flag) { sum++; z = y; if (temp[0] >= 'A' && temp[0] <= 'Z') z[0] = char(z[0]-'a' + 'A'); ans += z; if (i != len - 1) ans += " "; } else { ans += temp; if (i != len - 1) ans += " "; } l = i + 1; } } cout << sum << endl; cout << ans << endl; return 0; }