"{[]}"
true
"([)]"
false
"([]"
false
public boolean IsValidExp (String s) { String left = "{[("; Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c2 = s.charAt(i); if(stack.isEmpty() || left.contains(c2+"")){ stack.push(c2); continue; }else{ Character c1 = stack.peek(); if(c2=='}' && c1=='{'){ stack.pop(); } if(c2==']' && c1=='['){ stack.pop(); } if(c2==')' && c1=='('){ stack.pop(); } } } return stack.isEmpty(); }
# # # @param s string字符串 # @return bool布尔型 # class Solution: def IsValidExp(self , s ): # write code here if s =="": return True while "{}" in s&nbs***bsp;"()" in s&nbs***bsp;"[]" in s: s = s.replace('{}','') s = s.replace('[]','') s = s.replace('()','') if s=='': return True else: return False
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool IsValidExp(string s) { // write code here char fh[50]; strcpy(fh,s.c_str()); int len=strlen(fh); if(len==0) return true; if(len%2!=0) return false; for(int i=0;i<len;i++) { if(fh[i]=='(') { if(i>=1) { if(fh[i-1]==' '&&fh[i+1]==' ') return false; } for(int j=i+1;j<len;j++) { if(fh[j]==')') { fh[i]=' '; fh[j]=' '; break; } continue; } } if(fh[i]=='[') { if(i>=1) { if(fh[i-1]==' '&&fh[i+1]==' ') return false; } for(int j=i+1;j<len;j++) { if(fh[j]==']') { fh[i]=' '; fh[j]=' '; break; } continue; } } if(fh[i]=='{') { if(i>=1) { if(fh[i-1]==' '&&fh[i+1]==' ') return false; } for(int j=i+1;j<len;j++) { if(fh[j]=='}') { fh[i]=' '; fh[j]=' '; break; } continue; } } } for(int i=0;i<len;i++) { if(fh[i]!=' ') return false; } return true; } };遇到问题解决问题 哈哈哈 硬是没用任何数据结构(苦笑.jpg
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { // write code here Stack<Character> stack = new Stack<>(); for(char ch : s.toCharArray()){ if(ch == '[') stack.push(']'); else if(ch == '(') stack.push(')'); else if(ch == '{') stack.push('}'); else if(stack.isEmpty() || !stack.pop().equals(ch)) return false; } return stack.isEmpty(); } }
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { if(s.length()==1)return false; LinkedList list=new LinkedList(); for(int i=0;i<s.length();i++){ if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{') list.add(s.charAt(i)); if(s.charAt(i)==')'){ if(list.size()==0)return false; char a=(char)list.pollLast(); if(a!='(')return false; } if(s.charAt(i)==']'){ if(list.size()==0)return false; char a=(char)list.pollLast(); if(a!='[')return false; } if(s.charAt(i)=='}'){ if(list.size()==0)return false; char a=(char)list.pollLast(); if(a!='{')return false; } } return true; } }
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { if (s == null || s.length() == 0) { return true; } if(s.length() % 2 == 1){ return false; } Deque<Character> dq = new ArrayDeque<>(); Map<Character, Character> map = new HashMap<>(3); int n = s.length(); map.put('(',')'); map.put('[',']'); map.put('{','}'); for(char c : s.toCharArray()){ if(c == '(' || c == '{' || c=='['){ dq.add(c); }else{ if(dq.isEmpty() || map.get(dq.pollLast()) != c){ return false; } } } return true; } }
func IsValidExp( s string ) bool { // write code here if s == "" { return true } var stack []byte for i:=0; i<len(s); i++ { if s[i] == '{' { stack = append(stack, '}') }else if s[i] == '('{ stack = append(stack, ')') }else if s[i] == '[' { stack = append(stack, ']') }else { if len(stack) <= 0 { return false } top := stack[len(stack)-1] if top != s[i] { return false } stack = stack[:len(stack)-1] } } return len(stack) == 0 }
// 9/10,剩下的不知道什么情况 import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { int len = s.length(); Stack<Character> stack = new Stack<>(); stack.push(s.charAt(0)); for (int i = 1; i < len; i++) { char c = s.charAt(i); if (stack.isEmpty()){ stack.push(c); }else{ if (c == ')'){ if (stack.peek() !='('){ return false; }else { stack.pop(); } }else if (c == '}'){ if (stack.peek() !='{'){ return false; }else { stack.pop(); } }else if (c == ']'){ if (stack.peek() !='['){ return false; }else { stack.pop(); } }else stack.push(c); } } if (stack.isEmpty()){ return true; } return false; } }
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { // write code here Stack<String> stack = new Stack<String>(); if (s.length() == 0) { return true; } for(int i=0;i<s.length();i++){ String input = s.substring(i,i+1); if(input.equals("[") || input.equals("{") || input.equals("(")){ stack.push(input); }else { if(stack.size()==0){ return false; } String output = stack.pop(); switch (output){ case "{": if(!input.equals("}")){ return false; } break; case "[": if(!input.equals("]")){ return false; } break; case "(": if(!input.equals(")")){ return false; } break; } } } return true; } }
import java.util.Scanner; import java.util.Stack; public class 有效的括号 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String str = scanner.nextLine(); boolean valid = isValid(str); System.out.println(valid); } scanner.close(); } private static boolean isValid(String str) { if(str == null) { return false; } Stack<Character> stack = new Stack<>(); for(char ch: str.toCharArray()) { if(!valid(ch)) { return false; } if(isLeft(ch) || stack.isEmpty()) { stack.push(ch); } else { Character left = stack.pop(); if(!isValid(left, ch)) { stack.push(left); stack.push(ch); } } } return stack.isEmpty(); } private static boolean isValid(char left, char right) { return (left == '(' && right == ')') || (left == '[' && right == ']') || (left == '{' && right == '}'); } private static boolean isLeft(char ch) { return ch == '(' || ch == '[' || ch == '{'; } private static boolean valid(char ch) { return ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == '{' || ch == '}'; } }
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean IsValidExp (String s) { // write code here if(s.length() == 0) { return true; } if(s.length() % 2 != 0) { return false; } Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if(c == '{') { stack.push('}'); }else if(c == '[') { stack.push(']'); }else if(c == '(') { stack.push(')'); }else { Character pop = stack.pop(); if(pop != c) { return false; } } } return true; } }