簡體   English   中英

比較兩個字符串並計算相似字符的數量

[英]compare two strings and count number of similar characters

我正在嘗試編寫一個 js function 來比較兩個字符串並返回相似出現的次數。 但我的 function 也在考慮重復。 例如,兩個詞“州”和“高”。 理想情況下,它應該返回兩個計數,但考慮到兩個重復的 t 在“狀態”中,它返回三個。 誰能幫我解決這個問題

這是 ES5 解決方案:

 function solution(str1, str2) { var count = 0; var find = -1; for (var i = 0; i < str1.length; i++) { find = str2.indexOf(str1.charAt(i)); if (find > -1) { count++; str2 = str2.substr(0, find) + str2.substr(find + 1); } } return count; }; console.log(solution('state', 'tall'));

下次你必須先發布你的代碼,但這里有一些對你有用的東西:

const countSimilarities = (s1, s2) =>
  s1
    .split("")
    .map((char1) => s2.split("").find((char2) => char1 === char2))
    .reduce((acc, c) => (c ? acc + 1 : acc), 0);

可能會在此之外進行一些優化,但這是一個相當簡單的 function 版本來進行此檢查。

 function matchingLettersCount(s1, s2) { const letters1 = [...new Set(s1.split(''))]; const letters2 = [...new Set(s2.split(''))]; return letters1.filter(x => letters2.includes(x)).length; } console.log(matchingLettersCount('state', 'tall'));

這有幫助嗎? 我希望:如果您希望它區分大小寫,請將“gi”替換為“g”。

 function stringsCompare ( string, subString ) { let count = 0; string.replace(new RegExp(subString, "gi"), () => count++ ) return count; } //=========== test examples ================= console.log(stringsCompare("this is a string abc", "a")); // 2 occurances console.log(stringsCompare("foofoofoo", "foo")); // 3 occurances console.log(stringsCompare("aaaaaaaaa", "aa")); // 4 occurrences mmmm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM