-
Notifications
You must be signed in to change notification settings - Fork 0
/
a_130_Duplicate.java
61 lines (50 loc) · 1.55 KB
/
a_130_Duplicate.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
import java.util.Stack;
public class a_130_Duplicate {
public static boolean isDuplicate(String str) {
Stack<Character> s = new Stack<>() ;
for(int i=0; i<str.length(); i++){
char ch = str.charAt(i) ;
// closing bracates
// if(ch == ')' ) {
// int count = 0;
// while(s.peek() != '(' ) {
// s.pop() ;
// count++ ;
// }
// if(count < 1 ) {
// return true ; // duplicates
// }
// else{
// s.pop() ; // opening pair
// }
// }
// else{
// // opening or operands or operators
// s.push(ch) ;
// }
// closing bractracs
if(ch == ')' ) {
if(s.peek() == '(' ) {
return true;
}
else{
while(s.peek() != '(' ) {
s.pop() ;
}
s.pop() ; // for opening
}
}
else{ // opening or operator or operands
s.push(ch) ;
}
}
return false ;
}
public static void main(String[] args) {
// Valid string
String str = "((a+b))" ; // true
String str2 = "(a+b)" ; // false
System.out.println(isDuplicate(str));
System.out.println(isDuplicate(str2));
}
}