【发布时间】:2017-10-30 22:35:33
【问题描述】:
我需要检查一个字符串是否由数组中给定的任何字符串组合组成 示例:我们有 ["for","car","keys","forth"] 的数组和一个 "forthcarkeys" 字符串,结果应该是 true。如果字符串是 "forthcarxykeys",结果应该是 false因为 xy 不在数组中。数组中的单词顺序无关紧要。 不必匹配数组中的所有字符串,但测试字符串应仅由数组中的任何字符串组成。如果它包含除数组中的字符串以外的任何字符串,则返回 false
我的方法:
var str = "forthcarkeys";
var arr = ["for","car","keys","forth"];
for(var i=0;i<arr.length;i++)
{
if(str.indexOf(arr[i]) !== -1)
{
str.replace(arr[i],"");
}
}
if(str !== "")
{
console.log("yes");
} else
{
console.log("no");
}
但这种方法效率不高且失败。
【问题讨论】:
-
为什么会失败?什么不起作用?
-
如果我们在数组中有重复,它会失败,因为我们正在替换匹配的字符串,而且如果有更好的方法可以做到这一点,我愿意接受
-
数组中单词的顺序无关紧要如果你按照单词的长度对数组进行排序,你的代码就可以工作。
-
@George 你能解释一下为什么我们需要按单词长度对数组进行排序
-
@kiranreddy 你不知道。它仅适用于此示例,但您必须尝试每个订单。使用
arr = [ "abcd", "def", "abc" ]和str = "abcdef"进行测试
标签: javascript arrays string algorithm