Python 方便記憶的電話號碼

2021-10-10 17:38:19 字數 4677 閱讀 6014

問題描述:

總時間限制: 2000ms 記憶體限制: 65536kb

描述英文本母(除q和z外)和**號碼存在著對應關係,如下所示:

a,b,c -> 2

d,e,f -> 3

g,h,i -> 4

j,k,l -> 5

m,n,o -> 6

p,r,s -> 7

t,u,v -> 8

w,x,y -> 9

標準的**號碼格式是***-***x,其中x表示0-9中的乙個數字。有時為了方便記憶**號碼,我們會將**號碼的數字轉變為英文本母,如把263-7422記成america。有時,我們還加上「-」作為分隔符,如把449-6753記成hi-world。當然,我們未必要將所有的數字都轉變為字母,比如474-6635可以記成iphone-5。

總之,乙個方便記憶的**號碼由數字和除q、z外的英文本母組成,並且可以在任意位置插入任意多的「-」符號。

現在 ,我們有乙個列表,記錄著許多方便記憶的**號碼。不同的方便記憶的**號碼可能對應相同的標準號碼,你的任務就是找出它們。

輸入

第一行是乙個正整數n(n <= 100000),表示列表中的**號碼數。

其後n行,每行是乙個方便記憶的**號碼,它由數字和除q、z外的英文本母、「-」符號組成,其中數字和字母的總數一定為7,字串總長度不超過200。

輸出

輸出包括若干行,每行包括乙個標準**號碼(***-***x)以及它重複出現的次數k(k >= 2),中間用空格分隔。輸出的標準**號碼需按照公升序排序。

如果沒有重複出現的標準**號碼,則輸出一行「no duplicates.」。

樣例輸入

12

4873279

its-easy

888-

45673-

10-10-

10888

-glop

tut-glop

967-11-

11310

-gino

f101010

888-

1200-4

-8-7

-3-2

-7-9

-487

-3279

樣例輸出

310

-1010

2487

-3279

4888

-4567

3

#encoding:utf-8

deftransform

(s):

#轉換為標準形式***-***x

temp = s.replace(

'-','',

-1) templist =

list

(temp)

templist.insert(3,

'-')

temp =

''.join(templist)

return temp

defjudge

(s):

#將英文本母全部轉化為數字

temp = s

dict =

for i in

range

(len

(s))

:if s[i]

in dict:

temp = temp.replace(s[i]

,str

(dict[s[i]])

) temp = transform(temp)

if temp in results:

results[temp]+=1

else

: results[temp]=1

n =eval

(input()

)nums =

results =

flag =

false

for i in

range

(n):

input()

)for i in

range

(n):

if nums[i]

.replace(

'-','')

.isdigit():

#不含英文本母

temp = transform(nums[i]

)if temp in results:

results[temp]+=1

else

: results[temp]=1

else

: judge(nums[i]

)resultslist =

sorted

(list

(results.keys())

)#按照號碼公升序輸出

for item in resultslist:

if results[item]

>1:

flag =

true

print

(item+

' '+

str(results[item]))

ifnot flag:

print

("no duplicates."

)

#include

#include

#include

#include

#include

using

namespace std;

char

convert

(char c)

intmain()

res.

insert(3

,1,'-');

++telp_count[res];}

mapint>

::iterator map_it = telp_count.

begin()

;for

(;map_it != telp_count.

end();

++map_it)

if(map_it-

>second >=2)

if(!flag)

cout <<

"no duplicates."

<< endl;

return

0;

以及python滿分**:

def

convert

(c):

if c <=

'c':

return

2elif c <=

'f':

return

3elif c <=

'i':

return

4elif c <=

'l':

return

5elif c <=

'o':

return

6elif c <=

's':

return

7elif c <=

'v':

return

8elif c <=

'y':

return

9n =

eval

(input()

)nums =

flag =

false

results =

for i in

range

(n):

input()

)for i in

range

(n):

res =

''for j in

range

(len

(nums[i]))

:if nums[i]

[j]>=

'0'and nums[i]

[j]<=

'9':

res = res.__add__(nums[i]

[j])

elif nums[i]

[j]>=

'a'and nums[i]

[j]<=

'z':

res = res.__add__(

str(convert(nums[i]

[j])))

temp =

list

(res)

temp.insert(3,

'-')

temp =

''.join(temp)

results[temp]

= results.setdefault(temp,0)

+1resultslist =

sorted

(list

(results.keys())

)#按照序列輸出

for item in resultslist:

if results[item]

>1:

flag =

true

print

(item+

' '+

str(results[item]))

ifnot flag:

print

("no duplicates."

)

方便記憶的電話號碼

總時間限制 2000ms 記憶體限制 65536kb 描述 英文本母 除q和z外 和 號碼存在著對應關係,如下所示 a,b,c 2 d,e,f 3 g,h,i 4 j,k,l 5 m,n,o 6 p,r,s 7 t,u,v 8 w,x,y 9 標準的 號碼格式是 x,其中x表示0 9中的乙個數字。有...

百練 方便記憶的電話號碼

2000ms 65536kb 英文本母 除q和z外 和 號碼存在著對應關係,如下所示 a,b,c 2 d,e,f 3 g,h,i 4 j,k,l 5 m,n,o 6 p,r,s 7 t,u,v 8 w,x,y 9 標準的 號碼格式是 x,其中x表示0 9中的乙個數字。有時為了方便記憶 號碼,我們會將...

1002 方便記憶的電話號碼

英文本母 除q和z外 和 號碼存在著對應關係,如下所示 a,b,c 2 d,e,f 3 g,h,i 4 j,k,l 5 m,n,o 6 p,r,s 7 t,u,v 8 w,x,y 9 標準的 號碼格式是 x,其中x表示0 9中的乙個數字。有時為了方便記憶 號碼,我們會將 號碼的數字轉變為英文本母,如...