“最大价值”数字串

发布时间 2023-08-28 16:45:27作者: 酷炫小兜兜

魔法

如果字符串的每一个字符都是数字字符,那么这种字符串称为“数字串”,该串对应的整数称为“数字串”的价值。
读入一个字符串s, 在s的所有子串当中哪个子串是“数字串”且“数字串”价值最大?输出该子串的价值。
你有魔法,使用一次魔法你可以将字符串s的一个字符修改成你想要的任意一个字符。你最多可以使用a次魔法。

解题思路

上伪码(有注释):

len = s.size()
for(i = 0 ~ len - 1)
{ //起始位置
	for(j = i ~ len - 1)
	{ //结束位置
		string t = s.substr(i, j - i + 1) //取子串
		count = how_many_num(t)  //伪码
		if(count<=a)
		{
			for(k = 0 ~ t.size() - 1)
			{ //遍历子串t
				if(t[k]不是数字)
				{
					将t[k]修改成9
				}
			}
			remain = a - count
			for((k = 0 ~ t.size()-1) && (remain > 0))
			{
				if(t[k]不是9)
				{
					将t[k]修改成9
					remain--;
				}
			}
			value = stol(t)  //string to long
			if(MAX < value)
			{
				MAX = value
			}
		}
	}
}
cout << MAX;