2014-10-29 43 views
0
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。 我如何编码最后两行**?如果所有字母都显示在字符串中,则返回true?

+1

请添加您正在使用的标记语言。 – 2014-10-29 16:38:12

回答

0
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; 
} 

是这样的吗?

+0

它说某处有意外的标识符? – Tom 2014-10-29 16:53:44

+0

更新了答案。顺便说一句,你真的应该学习如何使用'Firebug'进行调试:http://getfirebug.com/ – 2014-10-29 16:55:42

0

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

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

这应该规模比有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 
*/ 
相关问题