我一直在尋找解決方案,但似乎找不到。我正在嘗試創建一個函式來檢查兩個不同的字串以識別每個單詞相同位置的任何單詞,并將其輸出為數字。一個例子:
“無菌”“會議”
這兩個詞在同一個地方有一個 E 和一個 I。別介意兩者中都存在的字母,但都是亂碼(我有一個解決方案,但恐怕對我沒有幫助)。我正在嘗試為匹配的兩個字母構建輸出 2 的東西。
所以,是的,我將如何讓它發揮作用?下面的代碼是非作業的,它檢查兩者中的現有字母,而不是它們是否在單詞中完全匹配。也許我發現它有問題?
var str1 = "sterile";
var str2 = "meeting";
function second() {
return Array.prototype.filter.call(str1, function(c) {
return str2.indexOf(c) === -1;
}, this).join('');
}
function second() {
return Array.prototype.filter.call(str1, function(c) {
return str2.indexOf(c) === -1;
}, this).join('');
}
console.log(second(str1, str2));
console.log(str1.length - second(str1, str2).length);
```
uj5u.com熱心網友回復:
可以優化并且可以計算一些邊緣情況,但這可能會。
const str1 = 'sterile';
const str2 = 'meetinghey';
function stringEqualityCheck(str1, str2) {
const longestString = str1.length > str2.length ? str1 : str2;
const longestStringArray = longestString.split('');
const shortestString = str1.length > str2.length ? str2 : str1;
let equalityCounter = 0;
shortestString.split('').forEach((letter, index) => {
if (letter === longestStringArray[index]) {
equalityCounter ;
}
});
return equalityCounter;
}
console.log(stringEqualityCheck(str1, str2));
uj5u.com熱心網友回復:
這應該可以完成作業:)
const str1 = "sterile";
const str2 = "meetinghey";
const getSameLetters = (a, b) => {
const minLength = Math.min(a.length, b.length);
const sameLetters = []
for (let i = 0; i < minLength; i ) {
if (a[i] === b[i]) {
sameLetters.push({ i, letter: a[i] })
}
}
return sameLetters
}
console.log(getSameLetters(str1, str2))
或以下,如果您只關心相同字母的數量:
const str1 = "sterile";
const str2 = "meetinghey";
const getSameLetters = (a, b) => {
const minLength = Math.min(a.length, b.length);
let sameLetters = 0
for (let i = 0; i < minLength; i ) {
if (a[i] === b[i]) {
sameLetters
}
}
return sameLetters
}
console.log(getSameLetters(str1, str2))
這些演算法背后的想法是這樣的:
- 由于我們只想在兩個單詞中找到在同一索引上匹配的字母,因此我們應該只迭代到最小單詞的末尾。因為您不想將未定義的“char”與另一個字串中的“char”進行比較 - 它們永遠不會匹配。所以這就是
Math.min(a.length, b.length)發現。 - 然后我們從零迭代到
minLength。在每個回圈周期中,我們比較來自a和b字串的相同索引上的字母。如果字母匹配,那么我們加sameLetters一,并繼續回圈。 - 回傳
sameLetters——這是我們要找的數字,同一索引下相同字母的數字:)
uj5u.com熱心網友回復:
實作此目的的一種簡短而簡單的方法是使用 將其中一個單詞拆分為一個陣列split,然后使用迭代該陣列forEach以查看每個位置的字符是否等于另一個單詞中相同位置的字符,然后遞增計數器,如果它們相同。
const str1 = "sterile";
const str2 = "meeting";
checkWords = (a, b) => {
let count = 0;
a.split('').forEach((letter, index) => letter === b[index] ? count : '');
return count;
}
console.log(checkWords(str1,str2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362739.html
標籤:javascript 细绳 相比
下一篇:按索引置換字串
