-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathValidParentheses.java
72 lines (59 loc) · 1.76 KB
/
ValidParentheses.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.vinay.practice.lc;
import java.util.Stack;
/*
*
* Given a string s containing just the characters '(', ')', '{', '}', '[' and ']',
* determine if the input string is valid.
* An input string is valid if:
* - Open brackets must be closed by the same type of brackets.
* - Open brackets must be closed in the correct order.
*
* Input: s = "()[]{}"
* Output: true
*
* Input: s = "(]"
* Output: false
*
*/
public class ValidParentheses {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "[])";
isValid(str);
}
public static void isValid(String s) {
Stack<Character> stack = new Stack<Character>();
char[] charArr = s.toCharArray();
char temp = ' ';
boolean valid = false;
System.out.println(charArr);
// if(charArr[0] == '}' || charArr[0] == ']' || charArr[0] == ')')
// System.out.println(valid);
for (char c : charArr) {
if(stack.isEmpty() && (c == '}' || c == ']' || c == ')') ) {
valid = false;
break;
}
if(c == '{' || c == '[' || c == '(') {
stack.push(c);
} else if( !stack.isEmpty() && (c == '}' || c == ')' || c == ']') ) {
temp = stack.peek();
if(c == '}' && temp+2 == c) {
valid = true;
stack.pop();
} else if(c == ']' && temp+2 == c) {
valid = true;
stack.pop();
} else if(c == ')' && temp+1 == c) {
valid = true;
stack.pop();
} else {
valid = false;
break;
}
}
System.out.println(stack.toString());
}
System.out.println(valid && stack.isEmpty());
}
}