天天看點

蛇皮的Python面試題目

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 '這怎一個狗字了的,蛇皮,皮這一下網易你就很快樂嗎?'