UVA10115-自动编辑

01.#include <iostream>   
02.#include <string>   
03.  
04.using namespace std;  
05.  
06.int main ()  
07.{  
08.    int n;  
09.    while(cin>>n&&n)  
10.    {  
11.        cin.get();  
12.        string s[n],t[n];  
13.        for(int i = 0; i < n; i++)  
14.        {  
15.            getline(cin,s[i]);  
16.            getline(cin,t[i]);  
17.        }  
18.        string st;  
19.        getline(cin,st);  
20.        int len = st.size();  
21.        for(int j = 0; j < n; j++)  
22.        {  
23.            for(int i = 0; i < len; i++)  
24.            {//cout<<s[j][0]<<" "<<st[i]<<endl;   
25.                if(s[j][0]!=st[i])continue;  
26.                else  
27.                {  
28.                    int f = 0;  
29.                    int l = s[j].size();  
30.                    for(int k = 0; k < l; k++)  
31.                    {//   
32.                        if(s[j][k]!=st[k+i])break;  
33.                        if(k == l - 1)f = 1;  
34.                    }  
35.                    if(f)  
36.                    {  
37.                        //cout<<s[j]<<"->"<<t[j]<<endl;   
38.                        st.replace(i,l,t[j]);  
39.                        len = st.size();需要斟酌之处!!!  
40.                        //cout<<st<<endl;   
41.                        i = 0;  
42.                    }  
43.                }  
44.            }  
45.        }  
46.        cout<<st<<endl;  
47.    }  
48.    return 0;  
49.}  
50.  
51.注:此题WA的原因是自己没考虑到,字符串扩充后长度的变化,致使i的范围没有得到扩充。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值