我試圖取代他們背對支架爲我採取解決上Hackerrank.com編碼挑戰的所有方括號中here.爲什麼不能使用換碼符替換所有的括號?
我覺得有一個解決的挑戰,但我似乎無法得到替換所有功能,以正常工作我的功能。我試過使用Pattern.quote(String)
以及反斜槓,但由於某些原因,我的括號沒有被替換。
public class Solution {
public static boolean isBalanced(String expression) {
if(expression.length() %2 != 0) {
return false;
}
else {
int middle = expression.length() /2;
String open = expression.substring(0,middle);
String close = expression.substring(middle);
close.replaceAll("\\)", "\\(");
close.replaceAll(Pattern.quote("}"),"{");
close.replaceAll(Pattern.quote("]"), "[");
new StringBuilder(close).reverse().toString();
if(close.equals(open))
return true;
else
return false;
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for (int a0 = 0; a0 < t; a0++) {
String expression = in.next();
System.out.println((isBalanced(expression)) ? "YES" : "NO");
}
}
}
編輯:我測試了打印語句的代碼行後new StringBuilder(close).reverse().toString();
輸入:
3
{[()]}
{[(])}
{{[[(())]]}
輸出:
)]}
NO
])}
NO
))]]}}
NO
我使用打印語句對其進行了測試。字符串根本不會改變。 – Remixt