漢明距離(Hamming Distance)是用來衡量兩個長度相同的字串之間差異的一種方法。它的計算方式是比對兩個字串中對應位置的字符,並計算不同字符的個數。
例子:
假設有兩個二進位字串:
1011101
1001001
它們的漢明距離是 2,因為在第二位和第四位的字符不同。
主要應用:
錯誤檢測與修正:
- 在通訊和存儲中,漢明距離被廣泛用於糾錯碼(例如:漢明碼),幫助檢測和修復資料中的錯誤。
資訊理論:
- 測量二進位字串間的相似度或差異性,用於資料傳輸完整性分析。
遺傳學:
- 在基因研究中,通過比較 DNA 序列來計算基因變異。
漢明距離的公式:
其中,異或操作 表示對應位置是否不同,不同為 1,相同為 0。
題目 1:基本計算
給定兩個等長的二進位字串 10101
和 10011
,計算它們的漢明距離。
題目 2:檢查字串長度
撰寫一個函式來計算漢明距離,並在兩個字串長度不相同時回傳錯誤訊息:
- 輸入:
"abcdefg"
和"abcdezz"
- 預期輸出:錯誤訊息或提示「字串長度不相同」。
題目 3:DNA 序列分析
在遺傳學中,DNA 是由字母 A
、T
、C
、G
組成。設計一個函式來計算兩條 DNA 序列的漢明距離。例如:
- DNA1:
ATCG
- DNA2:
TAGC
- 漢明距離為 4(因為每個位置的字母都不同)。
題目 4:找出最相似的字串
給定一組字串和一個目標字串,找出與目標字串漢明距離最小的字串。例如:
- 字串集合:
["1101", "1011", "1000", "1110"]
- 目標字串:
"1010"
- 結果應回傳:
"1011"
(漢明距離為 1)。
題目 5:檢查回文性
設計一個函式,計算一個字串與其反轉後字串的漢明距離。如果距離為 0,則表示該字串是回文。例如:
- 輸入:
"radar"
,輸出:0
- 輸入:
"hello"
,輸出:2
沒有留言:
張貼留言