牛牛喜歡彩色的東西,尤其是彩色的瓷磚。牛牛的房間內(nèi)鋪有L塊正方形瓷磚。每塊磚的顏色有四種可能:紅、綠、藍(lán)、黃。給定一個(gè)字符串S, 如果S的第i個(gè)字符是'R', 'G', 'B'或'Y',那么第i塊瓷磚的顏色就分別是紅、綠、藍(lán)或者黃。
牛牛決定換掉一些瓷磚的顏色,使得相鄰兩塊瓷磚的顏色均不相同。請(qǐng)幫牛牛計(jì)算他最少需要換掉的瓷磚數(shù)量。
輸入描述:
輸入包括一行,一個(gè)字符串S,字符串長(zhǎng)度length(1 ≤ length ≤ 10),字符串中每個(gè)字符串都是'R', 'G', 'B'或者'Y'。
輸出描述:
輸出一個(gè)整數(shù),表示牛牛最少需要換掉的瓷磚數(shù)量
示例1
輸入
RRRRRR
輸出
3
import java.util.*;
public class Main {
/*解題思路:
如果相鄰兩塊X1、X2瓷磚顏色相同,則需要替換瓷磚數(shù)加1,跳過(guò)下個(gè)瓷磚X2
(X2顏色更改為與X3不同)繼續(xù)比較X3與X4的顏色,所以代碼中顏色相同的情況下
有i++語(yǔ)句。直接判斷即可,兩兩判斷,因?yàn)橛兴膲K瓷磚,所以碰到相同的直接替換就可以,
而且一定可以找到一個(gè)與前面不同同時(shí)與后面不同的替換,所以只要直接替換,
不用考慮其他,找到相鄰兩個(gè)相同的,就將計(jì)數(shù)器加一,然后直接跳過(guò)這兩個(gè),
從下一個(gè)開(kāi)始判斷,就是兩兩判斷
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine()
System.out.println(replace(str,str.length()));
}
private static int replace(String str, int len) {
int count = 0;
for(int i=1;i<len;i++) {
if(str.charAt(i) == str.charAt(i-1)) {
count++;
i++;//跳過(guò)這兩塊
}
}
return count;
}
}
70%測(cè)試用例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);//
String str = sc.nextLine();//
char[] input=str.toCharArray();//字符串到字符數(shù)組
int ans=0;
for(int i=1;i<input.length;i=i+2){
if(input[i]==input[i-1]){
//把input[i]替換為與input[i+1]不同的字符串
ans++;
}
}
System.out.println(ans);//
}
}