先来一道UVA题目:
这是一道水题,但许多人的解法却不精简。题意是:有n个替换规则,对于输入的str,不停的应用第一个替换规则,直到str中不能使用这个替换规则,以此类推。
#include <iostream>
using namespace std;
int main()
{
int n,i;
while(cin >> n && n)
{
cin.get();//读取回车
string find[n], replace[n], text;
for( i = 0; i < n; ++i)
{
getline(cin, find[i]);//相当于 cin >> find[i]
getline(cin, replace[i]);
}
getline(cin, text);
for( i = 0; i < n; ++i)
{
int pos;
while(pos = text.find(find[i]), pos != string::npos)
{
text.replace(pos, find[i].size(), replace[i]);//从 pos 位置开始的 find[i].size 个字符替换为replace[i]
}
}
cout << text << endl;
}
return 0;
}