2017校招真題 小公尺 電話號碼分身

2021-09-11 16:46:13 字數 1748 閱讀 6296

本文首發於我的個人部落格suixin』s blog
繼miui8推出手機分身功能之後,miui9計畫推出乙個**號碼分身的功能:首先將**號碼中的每個數字加上8取個位,然後使用對應的大寫字母代替 (「zero」, 「one」, 「two」, 「three」, 「four」, 「five」, 「six」, 「seven」, 「eight」, 「nine」), 然後隨機打亂這些字母,所生成的字串即為**號碼對應的分身。

輸入描述:

第一行是乙個整數t(1 ≤ t ≤ 100)表示測試樣例數;接下來t行,每行給定乙個分身後的**號碼的分身(長度在3到10000之間)。

輸出描述:

輸出t行,分別對應輸入中每行字串對應的分身前的最小**號碼(允許前導0)。

示例1

輸入

4eight

zerotwoone

ohwetenrteo

ohewtiegthenrteo

輸出

0234

3450345

分身步驟:+8取個位–使用大寫字母代替–隨機打亂字母;

給的輸入是分身後的**號碼,需要輸出為分身前的最小**號碼。實際上問題的本質是需要從亂序的大寫字母版數字組合中識別出數字及其個數;

思路:部分單詞有唯一識別字母,如』zero』的』z』,可以先把這部分數出來;剩下的單詞又可以通過在剩下單詞中的唯一識別字母識別(後減去之前識別出有重複字母的單詞個數即為當前單詞個數);

別忘了最後需要將數字的個數對映回去(減去8)。python(3.5.2)

num =

int(

input()

)for _ in

range

(num)

: s =

input()

n0, n2, n4, n6, n8 = s.count(

'z')

, s.count(

'w')

, s.count(

'u')

, s.count(

'x')

, s.count(

'g')

n1, n3, n5, n7 = s.count(

'o')

- n0 - n2 - n4, s.count(

'h')

- n8, s.count(

'f')

- n4, s.count(

's')

- n6

n9 = s.count(

'i')

- n5 - n6 - n8

print

('0'

* n8 +

'1'* n9 +

'2'* n0 +

'3'* n1 +

'4'* n2 +

'5'* n3 +

'6'* n4 +

'7'* n5 +

'8'* n6 +

'9'* n7)

占用記憶體:3688k

電話號碼分身(小公尺2017秋招真題)

題目描述 繼miui8推出手機分身功能之後,miui9計畫推出乙個 號碼分身的功能 首先將 號碼中的每個數字加上8取個位,然後使用對應的大寫字母代替 zero one two three four five six seven eight nine 然後隨機打亂這些字母,所生成的字串即為 號碼對應的...

電話號碼分身(小公尺2017秋招真題)

題目描述 繼miui8推出手機分身功能之後,miui9計畫推出乙個 號碼分身的功能 首先將 號碼中的每個數字加上8取個位,然後使用對應的大寫字母代替 zero one two three four five six seven eight nine 然後隨機打亂這些字母,所生成的字串即為 號碼對應的...

2017 小公尺 電話號碼分身

繼miui8推出手機分身功能之後,miui9計畫推出乙個 號碼分身的功能 首先將 號碼中的每個數字加上8取個位,然後使用對應的大寫字母代替 zero one two three four five six seven eight nine 然後隨機打亂這些字母,所生成的字串即為 號碼對應的分身。第一...