//给定一个仅包含0或1的字符串,现在可以对其进行一种操作,当有两个相邻的字符其中一个是0另外一个是1的时候 //可以消除这两个字符,这样的操作一直进行下去,直到找不到相邻的0和1为止,问这个字符串经

题目:给定一个仅包含0或1的字符串,现在可以对其进行一种操作,当有两个相邻的字符其中一个是0另外一个是1的时候可以消除这两个字符,这样的操作一直进行下去,直到找不到相邻的0和1为止,问这个字符串经历了操作以后的最短长度。

int min_strlen(string& s)
{
	int i = 0;
	while (i < (int)(s.size()-1))
	{
		if ((s[i] == '0'&& s[i + 1] == '1') || (s[i] == '1'&& s[i + 1] == '0'))
		{
			s.erase(i, 2);//删除从i下标开始的2个字符
			i = 0;//每删除一对字符后,要将i移到开头(1100,11不构成删除,但是删除10后,前面的1和后面的0构成删除
			//因此每删除一对后,要将下标移到开头)
		}
		else
		{
			i++;
		}
	}
	return s.size();
}
题目:
[Tímù:]
名词 topic; subject; heading; examination question
 

猜你喜欢

转载自blog.csdn.net/lyl194458/article/details/89061125
今日推荐