-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProblem3
223 lines (136 loc) · 5.39 KB
/
Problem3
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
//Problem 3 : Valid Parentheses //
//
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.
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
Constraints:
1 <= s.length <= 104
s consists of parentheses only '()[]{}'.
//
//Solution//
class Solution {
public boolean isValid(String s) {
boolean test=true;
// edge case 1 : null //
if (s==null)
return false;
//size of the string//
int size=s.toCharArray().length;
//stack to load characters//
Stack<Character> st=new Stack<Character>();
//character array of the given string//
char[] charr = s.toCharArray();
// edge case 2 : 'string length is 1' //
if (size==1)
return false;
//edge case 3 : 'if the 1st character is a closing parantheses' //
if (charr[0]==')' || charr[0]==']' || charr[0]=='}')
return false;
for (int i=0;i<size;i++)
{
// push 1st character always//
if (i==0)
st.push(charr[i]);
// for 2nd character and so on... //
else
{
// if stack empty //
if (st.empty()==true)
{
//if the current character is a closing parantheses //
if (charr[i]=='}' || charr[i]==')' || charr[i]==']')
{
test=false;
break;
}
}
//
//if the current character is an opening parantheses//
if (charr[i]=='{' || charr[i]=='(' || charr[i]=='[')
{
//push to stack//
st.push(charr[i]);
//
//if the current character is the last//
if (i==(size-1))
//if stack is not empty,test fails//
if (st.empty()==false)
test=false;
//
continue;
}
//checking for the top of stack as any of the 3 characters//
else if (st.peek()=='(')
{
if (charr[i]==')')
{
//open-close pair is found, pop stack//
char p = st.pop();
//
//test for stack at last character//
if (i==size-1)
if (st.empty()==false)
test=false;
continue;
}
//open-close pair not satisfied//
else
{
test=false;
break;
}
//
}
else if (st.peek()=='[')
{
if (charr[i]==']')
{
char p = st.pop();
if (i==size-1)
if (st.empty()==false)
test=false;
continue;
}
else
{
test=false;
break;
}
}
else if (st.peek()== '{' )
{
if (charr[i]== '}')
{
char p = st.pop();
if (i==size-1)
if (st.empty()==false)
test=false;
continue;
}
else
{
test=false;
break;
}
}
//
}
}
return test;
}
}
//Submission result//
//
Runtime: 1 ms, faster than 99.06% of Java online submissions for Valid Parentheses.
Memory Usage: 37.5 MB, less than 71.75% of Java online submissions for Valid Parentheses.
//