用棧判斷是否對稱的字串
阿新 • • 發佈:2018-12-06
先進入字串括號的前半部分,然後依次彈出前半部分的元素,看與後半部分的元素是否對稱,可以用於判斷是否是偶數對稱迴文
class Solution { public boolean isValid(String s) { /*對以一個字串,採用棧的思想 如果是以(、{、[、開始的,則先存入棧中;在匹配是否有對稱的 如果不是這幾個字串,則判斷棧是否為空;為空;說明不是匹配的括號 棧不為空,則判斷棧中的元素是否與剛進來的字串匹配; 不匹配,則說明不是有效的括號*/ Stack<Character> stack=new Stack<>(); for(char c:s.toCharArray()){ if(c=='(' || c=='[' || c=='{' ){ stack.push(c); }else{ if(stack.isEmpty()){ return false; }else{ char cStack=stack.pop(); boolean b1=c==')'&&cStack!='('; boolean b2=c==']'&&cStack!='['; boolean b3=c=='}'&&cStack!='{'; if(b1||b2||b3){ return false; } } } } return stack.isEmpty(); } }