描述:
給定乙個字串,其中的字元只包含三種括號:花括號、中括號[ ]、圓括號( ),即它僅由 「( ) [ ] 」 這六個字元組成。設計演算法,判斷該字串是否有效,即字串中括號是否匹配。括號匹配要求括號必須以正確的順序配對,如 「」 或 「[ ( [ ] ) ]」 等為正確的格式,而 「[ ( ] )」 或 「」 或 「( ] )」 均為不正確的格式。
思路:
資料結構選用棧,讀到左括號時入棧,讀到右括號時判斷是否匹配,匹配則左括號出棧,最後判斷棧為空說明匹配,不為空不匹配。
**:
public class ismatch ))";
boolean res = match(string);
system.out.println(res);
} public static boolean match(string str) ', '
else if(map.containskey(c))
if(stack.peek()==map.get(c)) else
}} return stack.empty()?true:false;
}}
實現括號匹配演算法
括號匹配問題 假設乙個算術表示式中包含圓括號 方括號和花括號三種型別的括號,編寫乙個函式,用來判別表示式中的括號是否正確配對,並設計乙個測試主函式。演算法思想 在算術表示式中,右括號和左括號匹配的次序正好符合後到的括號要最先被匹配的 後進先出 堆疊操作特點,因此可以借助乙個堆疊來進行判斷。括號匹配共...
使用 Java 做括號匹配演算法
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。public boolean isvalid string s stack stack newstack for int i 0 i s.length...
括號匹配演算法
檢驗括號是否匹配的方法可以用 期待的急迫程度 這個概念來描述。例如,考慮下列括號序列 1 2 3 4 5 6 7 8 當計算機接受了第乙個括號後,它期待著與其匹配的第八個括號的出現,然而等來的卻是第二個括號,此時第乙個括號 只能暫時靠邊,而迫切等待與第二個括號相匹配的 第七個括號 的出現,類似地,因...