閱讀890 返回首頁    go 技術社區[雲棲]


網易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

  上一篇:go  熱火軍綠色沒動靜人的是都是菲尼克斯太陽
  下一篇:go  網絡安全法下的雲數據安全思考與實踐