最近、私はGoogleとソフトウェアエンジニアリングの面談を行いました。文字列が特定のパターンを満たしているかどうかを調べる
a) 'a'-'z' chars
b) '*' chars which can be matched by 0 or more letters
c) '?' which just matches to a character - any letter basically
だからコールは
のようなものが考えられます。givenPattern
が含まれている文字列です:
だから、あなたは次のことを行い
boolean isPattern(String givenPattern, String stringToMatch)
機能を構築する必要が
isPattern("abc", "abcd")
- それはdとしてfalseを返します。私たちは「」開始時に、それが「BC」
isPattern("a?bc", "adbc")
trueを返しに多くの文字を終了した後、持っているとして、OESパターンに一致しない事実である
isPattern("a*bc", "aksakwjahwhajahbcdbc")
、(「d」は余分です)パターンの各文字が指定された文字列内で一致するためです。
インタビュー中に、私はパターンを歩き回ることができると思った。文字が文字かa *か?与えられた文字列の文字をそれぞれ一致させます。しかし、それはループの複雑なセットで終わったし、45分以内に結論に至ることはできなかった。
誰かがこの問題を迅速かつ効率的に解決する方法を教えてください。
多くの感謝!
は、最も簡単な方法は、Javaの正規表現に、このパターンの構文を変換するための方法を記述するために次のようになります。http://docs.oracle.com/javase/tutorial/essential/regex/ – hsan
クラシック動的プログラミングの質問。 – Srinivas
それも私の質問でした。あなたは正規表現を使用することができますか?もしそうなら、これは@assyliasのコードに描かれているように比較的簡単に行うべきです。 – aa8y