望帝小刘 2024-03-15 10:38 采纳率: 0%
浏览 8

洛谷的单词替换题,只有60分,求解答

img


//B2135
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;
int main() {
    string s;
    getline(cin, s);
    string a, b;
    cin >> a >> b;
    int pos = 0;//记录每个单词的起始位置
    for (int i = 0; i < s.length(); i++)
    {
        if (s[i]==' ')
        {
            string c=s.substr(pos, i-pos);
            if (a==c)
            {
                cout << b<<" ";
            }
            else
                cout << c<<" ";
            pos = i + 1;
        }
    }
//考虑最后一个单词的情况
    if (a==s.substr(pos,s.size()-pos))
    {
        cout << b;
    }
    else
    {
        cout << s.substr(pos, s.size() - pos);
    }
    return 0;
}

不知道哪里出现问题,只对了60分,想请教一下大lao们,给点建议!万分感谢!

  • 写回答

3条回答 默认 最新

  • 关注

    望帝小刘 上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    根据你提供的代码,你的目标是实现将输入的字符串中的特定单词进行替换,并输出替换后的结果。你目前遇到的问题是只能得到60分,可能是因为某些情况无法正确处理。

    解决这个问题的一种可能方案是:

    1. 在处理最后一个单词的情况之前,你需要修改循环条件为i <= s.length(),使循环能够把最后一个单词也进行处理。
    2. 在最后一个单词的情况判断时,你可以直接使用else分支,无需使用if条件语句。因为在之前的循环中,如果字符串中有空格,就会及时输出并重置pos,因此最后一个单词的情况只会出现在字符串末尾。
    3. 另外,你可能需要考虑一些边界情况,比如当输入字符串中只有一个单词时,循环处理的部分可能不会被执行,要确保能够正确输出这个单词。

    以下是修改后的代码,你可以尝试一下:

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<iostream>
    #include<string>
    using namespace std;
    int main() {
        string s;
        getline(cin, s);
        string a, b;
        cin >> a >> b;
        int pos = 0;//记录每个单词的起始位置
        for (int i = 0; i <= s.length(); i++) // 更改循环条件
        {
            if (i == s.length() || s[i] == ' ') // 增加判断末尾单词的情况
            {
                string c = s.substr(pos, i - pos);
                if (a == c) {
                    cout << b << " ";
                }
                else {
                    cout << c << " ";
                }
                pos = i + 1;
            }
        }
        return 0;
    }
    

    希望这个解决方案能够帮助你解决问题,并得到更高的分数!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月15日

悬赏问题

  • ¥15 求解决为什么json数据完整,却解析失败
  • ¥15 打开Smart schedule运行examples/transformer-xl/scripts/run_enwik8_base_moe.sh 报错
  • ¥15 求一个C# sm4 加密解密的代码
  • ¥15 想做个网络加速器,怎么实现
  • ¥20 centos7下载mysql提示DNS解析异常
  • ¥20 vx转账功能对方不能领取
  • ¥15 vue2+codemirror 运行后页面光标太大了
  • ¥15 pdfjs库如何在前端实现打印、旋转等功能
  • ¥15 combobox数据绑定问题
  • ¥15 maven打包时,为什么有的依赖打不进去包