2016-08-19 4 views
-1

就職インタビューでは、指定された文字列sが2つの他の文字列part1とpart2から形成できるかどうかを確認するアルゴリズムを書くことに挑戦します。コードワードからの文字列チェッカーのマージ

part1とpart2の文字は、sと同じ順序であるという制約があります。

インタビュアーは、次の例を挙げて、残りのテストケースを把握するように指示します。例えば

'codewarsは' 'CDW' と 'oears' からのマージです:

以下

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

は私のjavascriptのコードである、に自分のミスを識別するのに役立ち、私が必要としてくださいすべてのテストに合格することができます。ありがとう!

まず、あなたはパート2とパート1を連結している。ここで

+0

このコードは 's'の最初の文字が' part1'の最初の文字と等しい場合に直ちに 'true'を返します!現在のところ、問題を解決するための重大な試みではありません。あなたが言うことができる最高のものは、何らかの入力を使って*真偽の出力を生成するアルゴリズムです。 –

+0

'var k = part1 + part2;' – m69

+0

これはどういう意味ですか?「制限は、part1とpart2の文字がsと同じ順番になっています。 – mhodges

答えて

1

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

は、私はそれが正しい軌道に乗ってあなたを送ることに気づいた物事のカップルです。あなたが提供した例に気付いた場合、 "codewars" is a merge from "cdw" and "oears"のため、これはうまくいきません。 "cdwoears""codewars"と等しくないので、 "cdw""oears"と連結するだけで十分ではありません。例の

お知らせあなたは、順番に入力された文字列sに対する文字ずつパート1("cdw")とその2("oears")を調べる場合は、最終的には、文字列全体("codewars")を綴ることができること。彼らはCodewarsの問題でこれを説明する方法に注意し、明確にする:

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

一つのアプローチでは、パート1とパート2のための別のためにまで現在のインデックスへのポインタを作成することができます。次に入力文字列sを繰り返して、一致する文字を持つポインタをインクリメントし、一致するものがなければfalseを返します。

+0

ありがとう@イアンアレン – Kwaku

関連する問題