问题标题: 酷町堂:1466 单词替换

1
0
已解决
曹志
曹志
资深守护
资深守护

请帮我看一看哪里错了,谢谢!(发修改代码的意见)

#include<iostream>     // 调用iostream同时也调用了string
using namespace std;
int main()
{
    string a;
    string x,y,t;
    getline(cin,a);
    cin>>x>>y;
    int l=1e9,r=-1e9,len=a.size();
    for(int i=0;i<len;i++)
    {
        l=1e9,r=-1e9;    //l是单词的开头位置的下标,r是单词的末尾位置的下标
        if(a[i]!=' ')
        {
            l=i,r=i+1;
            while(a[r]!=' '&&r<len) r++;    //确定单词的末尾下标
            for(int j=l;j<=r;j++)  //把获取的单词赋值给t
                t+=a[j];
            if(t==x)     // 判断这个单词要不要替换
            {
                int k=0;
                for(int j=l;j<=r;j++)   //替换单词
                {
                    a[j]=y[k];
                    k++;
                }
            }
            i+=(l-r)+1;
            l=1e9,r=-1e9;
        }
    }
    cout<<a;
}

代码中外围的for产生了死循环


0
已采纳
刘乐宸
刘乐宸
新手天翼
新手天翼

最后输出a即可!!!

采纳哦!!!

刘乐宸在2019-01-25 10:20:03追加了内容

0
我要回答