深信服校招编程题-替换字符串里的字符

题目描述

给出一个数字组成的字符串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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值