2 つの文字列を取り、文字列 1 の括弧内の単語を文字列 2 の括弧内の単語に置き換えた 1 つの文字列を返すメソッドを作成しようとしていますが、理解できない問題が発生しています。例として
replaceText("a (simple) programming (example)", "(cool) (problem)")
戻るべき
"a cool programming problem"
と
replaceText("a ((nested) example) with (three) replacements (to (handle))",
"the replacements are (answer) and (really (two) not three)")
戻るべき
"an answer with really (two) not three replacements "
ループ、基本的な String メソッド (.length()、.charAt())、これを行うための基本的な StringBuilder メソッド、および Character メソッドしか使用できませんが、深刻な問題に直面しています。
今、これは私のコードです
public class loopStringAnalysis {
public static String replaceText (String s1, String s2){
StringBuilder newStringBuild = new StringBuilder ();
int count = 0;
int count1 = 0;
for (int i = 0, i1 = 0; i < s1.length() && i1 < s2.length(); i = i + 1){
if (s1.charAt(i) == '(')
count = count + 1;
else if (s1.charAt(i) == ')')
count = count - 1;
else if (count == 0)
newStringBuild.append(s1.charAt(i));
else if (count != 0){
while (count1 == 0) {
if (s2.charAt(i1) == '(')
count1 = count1 + 1;
else if (s2.charAt(i1) == ')')
count1 = count1 - 1;
i1 = i1 + 1;
}
while (count1 != 0) {
if (s2.charAt(i1) == '(')
count1 = count1 + 1;
else if (s2.charAt(i1) == ')')
count1 = count1 - 1;
else if (count1 != 0)
newStringBuild.append(s2.charAt(i1));
i1 = i1 + 1;
}
while (count != 0) {
if (s1.charAt(i) == '(')
count = count + 1;
else if (s1.charAt(i) == ')')
count = count - 1;
i = i + 1;
}
}
}
return newStringBuild.toString();
}
最初の例では「クールなプログラミング プロジェクト」が返され、2 番目の例では「3 つではなく 2 つある回答」が返されます。この方法には問題があることはわかっていますが、どこにあるのかわかりません。コードを修正するための助けをいただければ幸いです。