一道笔试题
在網(wǎng)上看到這樣一道題。題目如下:
同構(gòu)串 時(shí)間限制:C/C++語言 1000MS;其他語言 3000MS 內(nèi)存限制:C/C++語言 65536KB;其他語言 589824KB 題目描述: 給出兩個(gè)字符串a(chǎn)1a2a3...an和b1b2b3...bm,如果存在一種映射ai=f(bi),且如果ai≠bi,f(ai)≠f(bi),我們稱這兩個(gè)字符串同構(gòu)。輸入 輸入第一行包含一個(gè)t,表示數(shù)據(jù)組數(shù),t<=20.對于每組數(shù)據(jù),輸入包含兩行,每一行有一個(gè)字符串。每個(gè)字符串的長度不超過10000,字符串全部由小寫字母組成。輸出 對于每組數(shù)據(jù)輸出一行,如果字符串同構(gòu),輸出“Yes”,不同構(gòu)則輸出“No”。樣例輸入2 abac bcbd aba abc 樣例輸出 Yes No當(dāng)時(shí)腦子里首先想到的就是python的字典。代碼實(shí)現(xiàn)如下:(python3)
def test1(a, b):if len(a)!=len(b):return Falsec = {i:0 for i in a}for i in range(len(b)):if c[a[i]] == 0:c[a[i]] = b[i]else:if c[a[i]] != b[i]:return Falsereturn True然后經(jīng)網(wǎng)友提醒還可以通過排序來判斷,代碼如下:
def test2(a, b):if len(a) != len(b):return Falsec = [[a[i], b[i]] for i in range(len(a))]c.sort()for i in range(len(c)-1):if c[i][0] == c[i+1][0] and c[i][1] != c[i+1][1]:return Falsereturn True這兩種方法經(jīng)測試都可以編譯通過,拿出來與大家共勉,如有不足,不吝賜教。
總結(jié)
- 上一篇: python3环境下使用OpenGL和G
- 下一篇: 一道逻辑题