題目描述
來源
OpenJudge網站 —— 百練習題集-第4106號習題
要求
總時間限制: 3000ms 單個測試點時間限制: 1000ms 內存限制: 65536kB
描述
給定一個字符串,求字符串中恰好出現2次的第一個字符。
輸入
第一行是一個正整數n(int範圍),表示共有n個字符串。
下面n行,每行是一個字符串,字符串的長度在int範圍內。字符串由小寫字母,大寫字母和數字構成,不包含其他字符。
輸出
總共n行,每行輸出一個字符,該字符在對應的字符串中恰好出現2次(區分大小寫)。如果有多個字符出現2次,輸出在字符串中比較靠前的字符。輸入數據保證每個字符串中必定有恰好出現2次的字符。
樣例輸入
3
farewell
20150106
PekingUniversity
樣例輸出
e
1
e
解題思路
- 利用Python的字典,統計字符出現次數很方便。但是,如何做到“有多個字符出現2次,輸出在字符串中比較靠前的字符”?這要求記住字符出現順序。
- Python的collections模塊的OrderedDict能記住字符出現順序。因爲,OrderedDict能記住鍵值對插入順序,遍歷的時候按插入順序來。
參考答案
from collections import OrderedDict
n = int(input())
for i in range(n):
line = input()
ch_count = OrderedDict() #生成有序字典對象
#統計字符出現次數
for s in line:
if s in ch_count:
ch_count[s] += 1 #已經出現過
else:
ch_count[s] = 1 #第一次出現
for ch, count in ch_count.items(): #按字符出現順序遍歷
if count == 2:
print(ch)
break
測試用例
-
題目描述給出的測試用例有3組測試數據。第1組測試數據裏頭,有多個字符出現2次,輸出了出現在前面的e字符。第2組測試數據內,只有1個字符出現2次。
-
一組測試數據。有多個字符出現2次。
樣例輸入
1
0110
樣例輸出
0 -
出現2次的字符在尾部。
樣例輸入
1
01102210233
樣例輸出
3
小結
- 利用Python collections模塊的OrderedDict,簡潔地解答了問題。
- Python內置模塊提供了大量類似的函數或方法,是一個大寶藏,值得挖掘。