python18年校招真題

2021-09-13 14:16:37 字數 1868 閱讀 9425

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 ...