我有這個編碼挑戰,我無法停止思考,也無法解決。給你 2 個字串,代表 2 個 DNA 序列,例如: dna1 = "ATGGTTAT" dna2 = "AGTGTTAT" 序列大小相同(它們可以有 7 到 8 個字符),如果它們有任何匹配的子字串,你應該比較它們并回傳第一個最大匹配子字串的位置。
示例:dna1 = "AAGGTGAT" dna2 = "AATGTGAT" 輸出應為 3。
我嘗試使用 for 回圈來迭代和比較兩個序列并回傳位置,但我找不到分離匹配子字串、比較它們并回傳位置的方法。有什么簡單的方法可以做到這一點嗎?還是有更好的語言來做到這一點?(我使用了 javascrip)
uj5u.com熱心網友回復:
由于您只比較兩個字串中相同位置的字符,因此您只需要一個回圈:
function mm(a, b) {
let longest = 0;
let longestPos = -1;
let pos = 0;
let len = 0;
while (pos < a.length) {
if (a[pos] == b[pos]) {
len ;
if (len > longest) {
longest = len;
longestPos = pos - len 1;
}
} else {
len = 0;
}
pos ;
}
return longestPos;
}
console.log(mm('AAGGTGAT', 'AATGTGAT'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488624.html
標籤:javascript 算法 组合 字符串匹配
上一篇:switch陳述句導致重復代碼