题目描述
给出一个数字组成的字符串s及n个数字变换(a,b),每个变换(a,b)是字符串里面不存在的数字a,则不做变换。
输出全部操作完后的字符串。注:注意算法效率。
输入描述
第一行一串0-9组成的字符串s
第二行一个整数n
第三行开始的n行每行是两个数a b代表数字a变成b
数据规模
1<=字符串s的长度<=1000000
1<=n<=1000000
输出描述
变换后的字符串
样例
输入
0285289430826
2
0 2
2 3
输出
3385389433836
代码1
功能实现了,测试用例也通过了,但是通过率0%不知道是不是算法效率的问题。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string s; //输入的s字符串
unsigned int n; //变换的数的个数
char a[10];
char b[10];
bool c;
int len;
int main() {
cin >> s;
len = s.size();
if (len < 1 && len> 1000000)
return 0 ;
cin >> n;
if (n < 1 && n > 1000000)
return 0;
for (int k = 0; k < n; k++)
{
cin >> a[k] >>b[k];
replace(s.begin(), s.end(), a[k], b[k]);
c = s.find(a[k]);
if (c != 1)
return 0 ;
}
cout << s << endl;
return 0;
}
代码2
功能也实现了,但是答题时间过了,没有实验能否通过。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s ;
int n;
char a, b;
cin >> s;
cin >> n;
int len = s.size();
for (int k = 0; k < n; k++)
{
cin >> a >> b;
for (int i = 0; i < len; i++)
{
if (s[i] == a)
{
s[i]= b;
}
}
}
cout << s <<endl;
return 0;
}