Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 字符串与另一个字符串字符的比较_Javascript_Jquery_Algorithm - Fatal编程技术网

Javascript 字符串与另一个字符串字符的比较

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=“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 |)

伪代码:

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?