1、小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所對應的磚塊顏色序列是相同的,那麼認為這兩種方式是一樣的。)
例如: s = 「abab」,那麼小易有六種排列的結果:
「aabb」,「abab」,「abba」,「baab」,「baba」,「bbaa」
其中只有"aabb"和"bbaa"滿足最多只有一對不同顏色的相鄰磚塊。
import collections
obj = collections.counter(raw_input())
length = len(obj)
if length > 2 or length == 0:
print 0
if length == 2:
print 2
if length == 1:
print 1
2、如果乙個數列s滿足對於所有的合法的i,都有s[i + 1] = s[i] + d, 這裡的d也可以是負數和零,我們就稱數列s為等差數列。
小易現在有乙個長度為n的數列x,小易想把x變為乙個等差數列。小易允許在數列上做交換任意兩個位置的數值的操作,並且交換操作允許交換多次。但是有些數列通過交換還是不能變成等差數列,小易需要判別乙個數列是否能通過交換操作變成等差數列
n = input()
x = map(int,raw_input().split())
length = len(x)
x.sort()
i = 1
if length < 2:
print "impossible"
d = x[1] - x[0]
while i < length-1:
if x[i] + d == x[i+1]:
i += 1
else:
print "impossible"
break
if i == length-1:
print "possible"
3、如果乙個01串任意兩個相鄰位置的字元都是不一樣的,我們就叫這個01串為交錯01串。例如: 「1」,「10101」,"0101010"都是交錯01串。
小易現在有乙個01串s,小易想找出乙個最長的連續子串,並且這個子串是乙個交錯01串。小易需要你幫幫忙求出最長的這樣的子串的長度是多少。
s = raw_input()
count = 1
sum = 1
for i in range(len(s)-1):
if abs(int(s[i+1]) -int(s[i]) ) == 1:
sum += 1
if sum > count :
count = sum
else:
sum = 1
print count
4、小易有乙個長度為n的整數序列,a_1,…,a_n。然後考慮在乙個空序列b上進行n次以下操作:
1、將a_i放入b序列的末尾
2、逆置b序列
小易需要你計算輸出操作n次之後的b序列。
n = input()
a = list(raw_input().split())
if n % 2 == 0:
b = a[n-1::-2] + a[0::2]
else:
b = a[n-1::-2] + a[1::2]
print ' '.join(b)
2023年校招題
牛牛有乙個魚缸。魚缸裡面已經有n條魚,每條魚的大小為fishsize i 1 i n,均為正整數 牛牛現在想把新捕捉的魚放入魚缸。魚缸內存在著大魚吃小魚的定律。經過觀察,牛牛發現一條魚a的大小為另外一條魚b大小的2倍到10倍 包括2倍大小和10倍大小 魚a會吃掉魚b。考慮到這個,牛牛要放入的魚就需要...
17校招真題題集(1)1 5
注 本系列題目全是按照通過率降序來排列的,基本保證題目難度遞增。遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍 1,1024 請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。輸入兩個引數,都是任務id,...
17校招真題題集(3)11 15
注 本系列題目全是按照通過率降序來排列的,基本保證題目難度遞增。小易去附近的商店買蘋果,奸詐的商販使用了 交易,只提供6個每袋和8個每袋的包裝 包裝不可拆分 可是小易現在只想購買恰好n個蘋果,小易想購買盡量少的袋數方便攜帶。如果不能購買恰好n個蘋果,小易將不會購買。輸入乙個整數n,表示小易想購買n ...