小米oj—字符串拼颜值

描述
现在是拼颜值的时代。 字符串也是如此,如果相邻字符相同出现次数越多 (即 s[i] == s[i + 1] ),那么字符串越丑,反之,颜值就越高。 我们定义字符串的丑陋度计算方法:如果对于两个相邻字符相等,加1分。否则不加分。 现在有一个由 a, b 和 ? 组成的字符串,计算丑陋度前需要先将字符串中的所有 ? 替换成 a 或 b。请输出能得到最低的字符串丑陋度。

举例: ?? 可表示为 ab,最低得分为0 a?a 可表示 aba,最低得分为0 abaa ,有一处相邻相等,最低得分为1

注意:最终分数越高表示字符串越丑陋

输入
由a, b, ?组成的字符串,长度为1 ~ 50

输出
字符串能得到丑陋分数的最低值

输入样例
??
a?a
abaa
复制样例
输出样例
0
0
1

此处应该考虑到三种情况:
1.“?”在字符串的首部:对颜值没有任何影响
2.在字符串的中间:“?”个数的奇偶数和“?”两边的字母是否相同相关
3.在字符串的尾部,与字符串的颜值没有任何关系
至此再加上各个字母的比较,即可成功的解决问题

private static String solution(String line) {
		int temp =0,num =0;
		char []a = new char[line.length()];
		for(int i= 0;i<line.length();i++)
		{
	       
			a[i] = line.charAt(i);
		
		}
		int i =0;
	while(i<=a.length-1)
	{temp =0;
		if(a[i] =='?')
			{temp =i;
			while(temp<=a.length-1&&a[temp]=='?')
			{
				temp++;
			}
			if(i ==0)
			{
				
				i=(temp+1);
			}
			else if((temp-1)!=a.length-1)
			{
				int jiou = temp-i;
				  if(a[i-1]==a[temp])
				  {
					  if(jiou%2==1)
					  {
						  i=temp+1;
					  }
					  else {
						  num++;
						  i = temp+1;
					  }
				  }
				  else {if(jiou%2==1)
				  {
					  num++;
					  i = temp+1;
				  }
				  else {
					  i =temp+1;
				  }
					  
				  }
			}
			else{
				i = temp;
			}
				
				
			}
		else {
			if(i==0)
			{
				i++;
			}
			else {
				if(a[i]==a[i-1])
					{num++;
					i++;
					}
				else {
					i++;
				}
			}
		}
		
		
	}
	
	return String.valueOf(num);
	}

猜你喜欢

转载自blog.csdn.net/adityasaber/article/details/82924089