[英]Balanced Symbol Check using Stack in Java
大家好,我給我分配了一個任務,我應該讀取用戶輸入的字符串,並使用堆棧檢查是否有平衡的符號。 因此,如果字符串為“ {{(()]}”),則該字符串是平衡的,因為每個開孔都有一個閉合。 我的想法是使用一個循環,該循環檢查給定字符串中的每個字符,並且該字符串是否具有諸如“ [[{”的開頭,則它確實具有stack.push(char)以及該字符是否更接近“)]。 }”,那么我需要使用stack.pop(char)。 我遇到的問題是,我的教授強迫我使用字符串方法,而在網上找到的任何幫助我都在使用布爾方法,如果有人可以在這里幫助我,我將不勝感激。
我知道我的代碼無法正常工作,但是您至少可以了解我的邏輯是什么。
導入java.util。*;
公共類BalancedSymbols {
public static String balancedSymbols(String lineToCheck){ //this is the method that im being forced to use
Stack<String> stack = new Stack<String>();
for (int i = 0; i<lineToCheck.length(); i++){
char x = '(';
char y = '{';
char z = '[';
char a;
a = lineToCheck.charAt(i);
if (a == x){
stack.push(a);
}
if (a == y){
stack.push(a);
}
if (a == z){
stack.push(a);
}
}
}
}
顯然,除了使用不同的符號外,我會針對彈出操作執行相同的操作。
這是邏輯:
創建空堆棧。 (您已經完成了)。
遍歷字符串。
對於您遇到的每個字符ch
,如果ch是}])並且堆棧為空,則返回false
其他
如果是({[ 將其推入 堆棧
如果ch
是)}] 檢查 堆棧頂部 。
如果堆棧頂部等於從堆棧彈出的對應的開括號,否則返回false 。
如果您已到達String的末尾並且堆棧不為空,則返回false
否則返回true 。
返回false的原因是我們沒有與此匹配的括號。 這些是多余的括號 。
嘗試先自己實施。 如果您遇到任何問題,請對其進行評論。我很樂意為您提供幫助。
如有任何疑問,請發表評論。
Create empty stack
==========================
private static boolean isValideEx(String str) {
Stack<Character> st=new Stack<Character>();
if(str == null || str.length() == 0)
return true;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)==')'){
if(!st.isEmpty() && st.peek()=='('){
st.pop();
}else{
return false;
}
}else if(str.charAt(i)==']'){
if(!st.isEmpty() && st.peek()=='['){
st.pop();
}else{
return false;
}
}else if(str.charAt(i)=='}'){
if(!st.isEmpty() && st.peek()=='{'){
st.pop();
}else{
return false;
}
}else{
st.push(str.charAt(i));
}
}
System.out.println(" sy "+st);
if(st.isEmpty())
return true;
else
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.