您好,登錄后才能下訂單哦!
要檢測一個包含嵌套括號的字符串是否是回文表達式,可以使用棧數據結構來解決這個問題
import java.util.Stack;
public class PalindromeParentheses {
public static void main(String[] args) {
String input = "(A(B(E)C)D)";
System.out.println("Is the input a palindrome parentheses expression? " + isPalindrome(input));
}
public static boolean isPalindrome(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(') {
stack.push(c);
} else if (c == ')') {
if (stack.isEmpty()) {
return false;
}
stack.pop();
}
}
// 移除棧中剩余的空括號
while (!stack.isEmpty()) {
stack.pop();
}
// 將棧中的字符反轉并與原始字符串比較
Stack<Character> reversedStack = new Stack<>();
for (char c : s.toCharArray()) {
if (c != '(' && c != ')') {
reversedStack.push(c);
}
}
StringBuilder sb = new StringBuilder();
while (!reversedStack.isEmpty()) {
sb.append(reversedStack.pop());
}
return s.equals(sb.reverse().toString());
}
}
這個程序首先使用一個棧來處理輸入字符串中的括號。當遇到左括號時,將其壓入棧中;當遇到右括號時,檢查棧是否為空,如果為空則返回false,否則彈出棧頂元素。最后,將棧中的字符反轉并與原始字符串比較,如果相等則說明輸入字符串是一個回文表達式。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。