890
技術社區[雲棲]
網易2018校招內推編程題 彩色的磚塊
問題:
小易有一些彩色的磚塊。每種顏色由一個大寫字母表示。各個顏色磚塊看起來都完全一樣。
現在有一個給定的字符串s,s中每個字符代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。
如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。
(如果兩種方式所對應的磚塊顏色序列是相同的,那麼認為這兩種方式是一樣的。)
例如: s = "ABAB",那麼小易有六種排列的結果:
"AABB","ABAB","ABBA","BAAB","BABA","BBAA"
其中隻有"AABB"和"BBAA"滿足最多隻有一對不同顏色的相鄰磚塊。
輸入描述:
輸入包括一個字符串s,字符串s的長度length(1 ≤ length ≤ 50),s中的每一個字符都為一個大寫字母(A到Z)。
輸出描述:
輸出一個整數,表示小易可以有多少種方式。
輸入例子1:
ABAB
輸出例子1:
2
java程序
public class ColoredBricks {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str= scanner.nextLine();//讀取該行輸入
char[] c= str.toCharArray();//轉換成char數組
Set<Character> set = new TreeSet<Character>();//該TreeSet為了不重複添加字符
for (int i = 0; i < c.length; i++) {
set.add(c[i]);
}
//根據set的長度,判斷輸出結果
if(set.size()==1)
System.out.println(1);
else if(set.size()==2)
System.out.println(2);
else
System.out.println(0);
}
}
最後更新:2017-09-02 15:32:38