蛇皮的Python面試題目

logincat發表於2018-04-17

1.小易有一些彩色的磚塊。每種顏色由一個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有一個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所對應的磚塊顏色序列是相同的,那麼認為這兩種方式是一樣的。)

例如: s = “ABAB”,那麼小易有六種排列的結果: 
“AABB”,”ABAB”,”ABBA”,”BAAB”,”BABA”,”BBAA” 
其中只有”AABB”和”BBAA”滿足最多隻有一對不同顏色的相鄰磚塊。

.

輸入描述:
1.輸入包括一個字串s,字串s的長度length(1 ≤ length ≤ 50),s中的每一個字元都為一個大寫字母(A到Z)。
輸出描述:
2.輸出一個整數,表示小易可以有多少種方式。
輸入例子:ABAB
輸出例子:2

程式碼:

a = raw_input("")
new = []
for i in range(len(a)):
new.append(a[i])
f len(set(new)) == 2: #set(new) 返回有序不重複 eg:輸入ABAB 那麼set(new) = [`A`,`B`]
      print 2
elif len(set(new)) == 1:#當輸入的字串是 一個 字元時 那麼就只有一種方法了
      print 1
else:
      print 0 #當有ABC三種顏色的地板時 那麼 無論如何都超過 相鄰的不同顏色對數 超過 1 因此排序方式為0
print `這怎一個狗字了的,蛇皮,皮這一下網易你就很快樂嗎?`


相關文章