My300 leetcodePDF-Stack
My300 leetcodePDF-Stack
for(String s: tokens) {
// if digits
if(!symbols.contains(s)) {
digitStack.push(s);
}
else {
// operator.. so operate
int num1 = Integer.valueOf(digitStack.pop());
int num2 = Integer.valueOf(digitStack.pop());
if(s.equals("+")) {
digitStack.push(String.valueOf(num1+num2));
}
if(s.equals("-")) {
digitStack.push(String.valueOf(num2-num1));
}
if(s.equals("*")) {
digitStack.push(String.valueOf(num1*num2));
}
if(s.equals("/")) {
digitStack.push(String.valueOf(num2/num1));
}
}
}
return Integer.valueOf(digitStack.pop());
}
37_38 Largest Rectangle in Histogram/2D array
public int maximalRectangle(char[][] matrix) {
if(matrix == null || matrix.length == 0 || matrix[0].length == 0)
return -1;
int rows = matrix.length;
int cols = matrix[0].length;
}
33 Valid Parentheses
public boolean isValid(String s) {
Map<Character, Character> hm = new HashMap<>();
hm.put('(',')'); hm.put('{','}'); hm.put('[',']');
for(Character c: s.toCharArray()){
if(hm.keySet().contains(c)) {
st.push(c);
}
else { // closing brace
if(hm.values().contains(c)) { // if brace in values
if(st.isEmpty() || hm.get(st.pop()) != c)
return false;
}
else {
return false;
}
}
}
return st.isEmpty();
}
while(left< right) {
if(s.charAt(left) != s.charAt(right)) {
if(!foundDiff) {
foundDiff = true;
if(isPalindrome(s, left+1, right))
left++;
else if( isPalindrome(s, left, right-1))
right--;
else
return false;
}
else {
return false;
}
}
else {
left++; right--;
}
}
return true;
}
private boolean isPalindrome(String s, int left, int right) {
while(left<right){
if(s.charAt(left) != s.charAt(right))
return false;
left++; right--;
}
return true;
}