對於作業分配,我必須輸入2個用戶輸入的字符串,並找出有多少字母是共同的(在兩個字符串的相同位置),以及找到常用字母。 。例如,對於兩個字符串'貓'和'老鼠',有2個常見的字母位置(在這種情況下是位置2和3),並且常用字母也是2,因爲'a'被找到一個't' '也被發現一次..在Python中查找2個字符串之間的通用字母
所以我做了一個程序,它運行良好,但後來我的老師更新了更多的例子,具體例子重複字母,我的程序是不工作的..對於例如,字符串'ahahaha'和'huhu' - 在同一位置有0個常見字母,但它們之間有3個常見字母(因爲字符串2中的'h' ppears在字符串1,三次..)
我的整個問題是,我不知道如何計算如果「h」多次出現在第一個字符串,以及我不知道如何不檢查第二次在忽忽「H」,因爲它應該只算獨特的字母,所以總體常見的字母數應爲2 ..
這是我當前的代碼:
S1 = input("Enter a string: ")
S2 = input("Enter a string: ")
i = 0
big_string = 0
short_string = 0
same_letter = 0
common_letters = 0
if len(S1) > len(S2):
big_string = len(S1)
short_string = len(S2)
elif len(S1) < len(S2):
big_string = len(S2)
short_string = len(S1)
elif len(S1) == len(S2):
big_string = short_string = len(S1)
while i < short_string:
if (S1[i] == S2[i]) and (S1[i] in S2):
same_letter += 1
common_letters += 1
elif (S1[i] == S2[i]):
same_letter += 1
elif (S1[i] in S2):
common_letters += 1
i += 1
print("Number of positions with the same letter: ", same_letter)
print("Number of letters from S1 that are also in S2: ", common_letters)
所以這段代碼工作了沒有常見字母的字符串,但是當我嘗試使用「ahahaha」和「huhu」時,我得到0個常見位置(這是合理的)和2個常見字母(當它應該是3)時。我認爲它是migh將不起作用,如果我嘗試添加以下內容:我不要求直接回答或一段代碼
while x < short_string:
if S1[i] in S2[x]:
common_letters += 1
else:
pass
x += 1
然而,這也不行......
要做到這一點,因爲我想做我自己的,但我只需要幾個提示或想法如何做到這一點..
注意:我不能使用任何我們沒有在課堂上採取的功能,我們在類只做基本的循環和字符串..
更簡單的方法:創建兩個數組,每個數組有26個條目(a-z)。循環兩個字符串並將它們「盤點」到兩個數組中。例如「foobar」給你a(1),b(1),f(1),o(2),r(1)'。然後循環兩個數組,並查看哪些字母BOTH具有非零計數。 – 2014-09-22 16:46:03
使用set和set.intersection – joaquin 2014-09-22 16:49:13
覆蓋循環時,你有覆蓋枚舉()? – TML 2014-09-22 21:40:12