您好,登錄后才能下訂單哦!
要檢測一個(gè)包含嵌套括號的字符串是否是回文表達(dá)式,可以使用棧數(shù)據(jù)結(jié)構(gòu)來解決這個(gè)問題
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();
}
// 將棧中的字符反轉(zhuǎn)并與原始字符串比較
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());
}
}
這個(gè)程序首先使用一個(gè)棧來處理輸入字符串中的括號。當(dāng)遇到左括號時(shí),將其壓入棧中;當(dāng)遇到右括號時(shí),檢查棧是否為空,如果為空則返回false,否則彈出棧頂元素。最后,將棧中的字符反轉(zhuǎn)并與原始字符串比較,如果相等則說明輸入字符串是一個(gè)回文表達(dá)式。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。