【问题标题】:Returning true if all letters appear in string?如果所有字母都出现在字符串中,则返回true?
【发布时间】:2014-10-29 16:34:36
【问题描述】:
function match (string,pattern){

  pattern = pattern.toLowerCase();
  string = string.toLowerCase ();

  for (var i=0;i<pattern.length;i++){
    for (var j=0;j<string.length;j++){
      if (pattern.charAt[i]==string.charAt[j]){

      }
      *if i has not been found, abort and return false*

    }
  *as function not aborted, char i=found therefore return true*
  } 


}

// 如果模式的所有单个字母都出现在字符串中(无论顺序如何),我需要返回 true。 我如何编码最后两行**?

【问题讨论】:

  • 请添加您使用的语言作为标签。

标签: javascript string


【解决方案1】:
function match (input,pattern){

  pattern = pattern.toLowerCase();
  input= input.toLowerCase ();

  for (var i=0;i<input.length;i++){
    var found = false;
    for (var j=0;j<pattern.length;j++){
      if (pattern.charAt(j)==input.charAt(i)){
        // Letter was found, skip to next one
        found = true;
        break;
      }
    }

    // As soon as we conclude that one letter was not found, abort
    if (found == false){
        return false;
    }
  }

  // All letters were found, return SUCCESS
  return true; 
}

这样的?

【讨论】:

  • 它在某处显示了意外的标识符?
  • 更新了答案。顺便说一句,你真的应该学习如何使用Firebug 进行调试:getfirebug.com
【解决方案2】:

如果您使用Array.every 会更好。它更短,你的意图很明显。

function match (str, pattern) {
    str = str.toLowerCase();
    return pattern.toLowerCase().split("").every(function(c) {
        return str.indexOf(c) !== -1;
    });
}

【讨论】:

    【解决方案3】:

    这个应该比将for 循环嵌套在另一个循环中更好:

    function everyChar(sample,pattern){
      var patTable=Object.create(null);
      var aSample=Array.prototype.slice.call(sample.toLowerCase());
      var aPattern=Array.prototype.slice.call(pattern.toLowerCase());
      aPattern.forEach(function(c){patTable[c]=true;});
      aSample.forEach(function(c){delete patTable[c];});
      return Object.keys(patTable).length==0;
    }
    
    var sample_pass="pack my box with five dozen liquor jugs";
    var pat="the quick brown fox jumped over the lazy dogs";
    everyChar(sample_pass,pat);
    
    /*
    true
    */
    
    var sample_fail="pack my bag with five dozen liquor jugs";
    everyChar(sample_fail,pat);
    
    /*
    false
    */
    

    【讨论】:

      猜你喜欢
      • 2017-03-26
      • 1970-01-01
      • 2022-12-04
      • 2015-05-13
      • 2018-08-27
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2020-09-18
      相关资源
      最近更新 更多