题目描述
给出一个数字组成的字符串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
#include
#include
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
#include
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;
}