从Codewars合并字符串检查器

时间:2016-08-19 15:16:44

标签: javascript algorithm

在面试时,你很难写一个算法来检查给定的字符串s是否可以由另外两个字符串part1和part2组成。

限制是part1和part2中的字符与s中的字符顺序相同。

面试官给出了以下示例,并告诉您从给定的测试用例中找出其余部分。

例如:

'codewars'是来自'cdw'和'oears'的合并:

https://www.codewars.com/kata/merged-string-checker/train/javascript

下面是我的javascript代码,我需要帮助才能确定我的错误才能通过所有测试。谢谢!

function isMerge(s, part1, part2) 
{
    var k = part1 + part2;
    for(var b = 0, len = s.length; b < len; b++) {
        for(var i = 0, len = k.length; i < len; i++) {
            if (s[b] === k[i]) {
                return true;
            }       
        }
    }
    return false;      
}

1 个答案:

答案 0 :(得分:1)

以下是我发现的一些可能会让您走上正确轨道的事情:

首先,您将part1与part2连接起来。这不会起作用,因为如果您在提供的示例中注意到"codewars" is a merge from "cdw" and "oears"。简单地将"cdw""oears"联系起来就不够了,因为"cdwoears"不等于"codewars"

请注意,在示例中,如果按顺序检查part1("cdw")和part2("oears"),逐个字符对输入字符串s,最终可以拼出整个字符串("codewars")。为了澄清,请注意他们如何在Codewars问题中说明这一点:

    s:  c o d e w a r s   = codewars
part1:  c   d   w         = cdw
part2:    o   e   a r s   = oears

一种方法可能是创建一个指向您当前为part1而另一个为part2的索引的指针。然后遍历输入字符串s并递增您具有匹配字符的指针,如果您没有匹配则返回false。