(JavaScript) 所以,我需要一個函式 checkString(str, substr) 來檢查一個字串是否由給定子字串的多次出現組成。
示例:
checkString("abc", "abc") -> true
checkString("abcabcabc", "abc") -> true
checkString("abcdef", "abc") -> false
checkString("abcab", "abc) -> true
有人可以幫助我嗎?
uj5u.com熱心網友回復:
如果空格無關緊要,這是一個解決方案:
const checkString = (bigString, subString) => {
const split = bigString.split(subString);
const onlyOccurances = split.filter(v => v === '');
return split.length === onlyOccurances.length
}
checkString("abc", "abc") // true
checkString("abcabcabc", "abc") // true
checkString("abcdef", "abc") // false
bigString.split(subString)如果有完美匹配,會將大字串拆分為一個空字串陣列,并且它的長度將恰好是出現的次數。如果陣列中的任何一個值不是空字串,則意味著不存在完美匹配,因此空過濾的長度和拆分值的長度之間會有差異。
希望這是有道理的。
uj5u.com熱心網友回復:
此方法將回傳一個物件,如果在字串中找到該值,則 found 為 true,如果多次找到,則 multipleFound 為 true;
const checkString = function(str, v) {
let found = false,
multi = false,
index;
index = str.indexOf(v);
if (index !== -1) {
found = true;
index = str.indexOf(v, index v.length);
if (index !== -1) {
multi = true;
}
}
return {
found : found,
multipleFound : multi
};
};
uj5u.com熱心網友回復:
這將是檢查模式的一種方法abc:
const rx=/^(abc) $/;
console.log(["abc","abcabcabc","abcdef"].map(t=>
`${t} ${rx.test(t)}`))
uj5u.com熱心網友回復:
我強烈建議在 leetcode.com 之類的網站上提高你的演算法技能
這是我想出的
function checkString(whole, sub) {
for (let i = 0; i < whole.length; i ) {
if (whole[i] !== sub[i % sub.length]) {
return false;
}
}
return true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496464.html
標籤:javascript 功能
