乐乐的作业

题目来自乐知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;
}
原文地址:https://www.cnblogs.com/--lr/p/14088754.html