2016-10-29 2 views
0

私は文字列の形でTreeNodeを与えられています。文字列の検証を行い、実際に正しく動作しているかどうかを調べる必要があります。 私のプログラムは木を表現する上でうまく動作し、ダブルカンマなどの他の例外をソートしましたが、無効なツリーのいくつかの例外は私に苦労しています。Java Node String Validation

テスト1:

"(,1)2" 

簡単に確認する:

str.contains"(," 

テスト2:

"(1)2,(3)4" 

テスト3:

"(1,2)3,4" 

最後の2回のテストで、私はそれらにアプローチする方法について頭痛を与えています。私はstringbuilderを使用して数字なしでチェックしようとしましたが、問題は、同じブラケットとコンマコンボを使用する正しいツリーがあることです(ツリー内のcorrentです(例えば、 "+ 2)、3)、+(4,5))...)

ノードの繰り返し処理中に、他の操作の前に何らかの点検をすることはできますか、それともどこかで行う必要がありますか?

PS:これらはすべて丸めでなければならず、数字は何でもかまいません。だから私は全体の文字列とチートを入れておくことはできません

答えて

0

正規表現を使用することはできますか?

テスト2:

Pattern pattern = Pattern.compile("\([0-9]\)[0-9],\([0-9]\)[0-9]"); 
Matcher matcher = pattern.matcher(s); 
boolean found = matcher.find(); 

はテスト3:

Pattern pattern = Pattern.compile("\([0-9],[0-9]\)[0-9],[0-9]"); 
Matcher matcher = pattern.matcher(s); 
boolean found = matcher.find(); 
+0

私がすることができますが、それはまだ、ある一つのノードのビルドにちょっと具体的だし、両方の文字列の問題は、カンマの配置です私は彼らがフィット感のある解決策を求めていると思います(たとえば、2つのカンマはどこの文字列でも構いません)。これが私に頭痛を与えている理由です。 –

+0

文字列を循環させ、各文字を単独で処理する必要があります。シンプルなクッキーカッターソリューションはありません。これを行うには実際にアルゴリズムを設計する必要があります。 正しい解決策を見つけるために、いくつかの方法、おそらく再帰的な方法を書くことが期待されます。 あなたの宿題を行うのはStackoverflowではありませんので、あなたが望むのは、あなたの好みの方法(紙とペン、擬似コード、ハックアウト)を使ってアルゴリズムを設計することです。仲間の学生の助けを借りてください! – ChickenFeet