Untitled

 avatar
unknown
java
2 months ago
2.7 kB
144
Indexable
// leetcode 234


class Solution {
    public boolean isPalindrome(ListNode head) {
        Stack<Integer> st = new Stack<>();

        ListNode curr = head;
        
        while(curr != null){
            st.push(curr.val);

            curr = curr.next;
        }

        curr = head;

        while(curr != null){
            if(curr.val != st.peek()){
                return false;
            }

            st.pop();
            curr = curr.next;
        }

        return true;
    }
}


// leetcode 71 ========================================= 

public String simplifyPath(String path) {
        String[] paths = path.split("/");

        Stack<String> st = new Stack<>();

        for(int i=0; i<paths.length; i++){
            String curr = paths[i];
            // System.out.println(curr);

            if(curr.equals("..")){
                if(st.size()>0) st.pop();
            } else if(curr.equals(".") || curr.equals("")){
                // do Nothing
            } else { // folderName
                st.push(curr);
            }
        }

        StringBuilder sb = new StringBuilder();

        while(st.size()>0){
            sb.insert(0,"/"+st.pop());
        }

        if(sb.length() == 0) return "/";

        return sb.toString();
    }
    
    
// leetcode 394 ======================= 

public String decodeString(String s) {
        Stack<Character> st = new Stack<>();

        for(int i=0; i<s.length(); i++){
            char ch = s.charAt(i);

            if(ch != ']'){
                st.push(ch);
            } else {
                // get a string until we see '[' 
                StringBuilder sb = new StringBuilder();
                while(st.size() > 0 && st.peek() != '['){
                    sb.insert(0, st.pop());
                }

                String toRepeat = sb.toString();
                st.pop(); // removing '['

                // get the number before '['
                sb = new StringBuilder();
                while(st.size()>0 && st.peek()>='0' && st.peek()<='9'){
                    sb.insert(0, st.pop());
                }

                int count = Integer.parseInt(sb.toString());
                // repeat the string "count" times and push in stack

                while(count-- > 0){
                    for(int j=0; j<toRepeat.length(); j++){
                        char c = toRepeat.charAt(j);
                        st.push(c);
                    }
                }
            }
        }

        StringBuilder ans = new StringBuilder();

        while(st.size() > 0){
            ans.append(st.pop());
        }

        ans.reverse();
        return ans.toString();
    }
Leave a Comment