Javascript 字符串与另一个字符串字符的比较
假设我有两个字符串a=“a-b-c”,另一个是b=“a-b”。Javascript 字符串与另一个字符串字符的比较,javascript,jquery,algorithm,Javascript,Jquery,Algorithm,假设我有两个字符串a=“a-b-c”,另一个是b=“a-b”。 我想检查字符串a是否包含字符串b的每个字母表。一个有效的解决方案是将两个字符串读入两个字符。执行此操作后,“a中b中的每个字符”当且仅当b是a的a。它可以优化为只使用一个集合(对于b)-参见伪代码 这种方法的复杂性是使用哈希表平均O(|a |+| b |),或者O(log(min{a |,b |})*(|a |+| b |))使用基于树的最坏情况。这比简单的解决方案要好得多,如果搜索每个字符,它将得到O(|a |*|b |) 伪代码
我想检查字符串a是否包含字符串b的每个字母表。一个有效的解决方案是将两个字符串读入两个字符。执行此操作后,“a中b中的每个字符”当且仅当
b
是a
的a。它可以优化为只使用一个集合(对于b)-参见伪代码
这种方法的复杂性是使用哈希表平均O(|a |+| b |)
,或者O(log(min{a |,b |})*(|a |+| b |))
使用基于树的最坏情况。这比简单的解决方案要好得多,如果搜索每个字符,它将得到O(|a |*|b |)
伪代码:
setB <- empty set
for each element e in b:
setB.add(e)
for each element e in a:
setB.remove(e) //assuming doing nothing if doesn't exist
return setB.isEmpty()
setB函数func(a,b){
var字母表=b.拆分(“-”);
对于(变量i=0;i
您可以使用以下代码:
var b = "a-b";
var a = "a-b-c";
var firstArray = b.split("-");
var secArray = a.split("-");
var length = firstArray.lenght;
for(var i =0; i<length; i++)
{
if(secArray.indexOf(firstArray[i]) != -1)
continue; //or do something
else
break; // or return false.
}
var b=“a-b”;
var a=“a-b-c”;
var firstArray=b.split(“-”);
var secArray=a.split(“”);
变量长度=firstArray.lenght;
对于(var i=0;i我假设有几种方法和顺序可以使两个字符串都得到表示;也就是说,最直接的方法是检查字符串b中的每个字符是否确实包含在字符串a中。为此,可以很容易地对字符串a调用indexOf(currentCharFromStringB)
我希望以下示例能帮助您了解我的想法:
"Blue Whale".indexOf("Blue") != -1; // true
"Blue Whale".indexOf("Bloe") != -1; // false
一些伪代码可能是:
for each char in b
for each char in a
is a in b?
现在,由您决定如何提取或表示字符串B的每个字符
我希望这能有所帮助。你能发布你的代码吗?对于“每个字母表”,你的意思是“每个字符”?字符必须以相同的顺序出现吗?只需迭代b个字符并测试它们是否出现在a(使用indexOf)中。请注意,这是一个非常低效的解决方案(与备选方案相比),并在O(| a |*| b |)中运行
@amit O复杂度越高并不意味着它的速度越慢,特别是对于问题中的短字符串。构建集合也需要成本。@dystroy:不,对于短字符串不需要,但我敢打赌,对于任何n>10的字符串都会。
for each char in b
for each char in a
is a in b?