LeetCode – Scramble String (Java)

Given two strings s1 and s2 of the same length, determine if s2 is a scrambled string of s1. Java Solution public boolean isScramble(String s1, String s2) { if(s1.length()!=s2.length()) return false;   if(s1.length()==0 || s1.equals(s2)) return true;   char[] arr1 = s1.toCharArray(); char[] arr2 = s2.toCharArray(); Arrays.sort(arr1); Arrays.sort(arr2); if(!new String(arr1).equals(new String(arr2))){ return false; }   … Read more

LeetCode – One Edit Distance (Java)

Given two strings S and T, determine if they are both one edit distance apart. Java Solution public boolean isOneEditDistance(String s, String t) { if(s==null || t==null) return false;   int m = s.length(); int n = t.length();   if(Math.abs(m-n)>1){ return false; }   int i=0; int j=0; int count=0;   while(i<m&&j<n){ if(s.charAt(i)==t.charAt(j)){ i++; j++; … Read more

LeetCode – Reverse Linked List (Java)

Reverse a singly linked list. Java Solution 1 – Iterative public ListNode reverseList(ListNode head) { if(head==null||head.next==null) return head;   ListNode p1 = head; ListNode p2 = p1.next;   head.next = null; while(p1!=null&& p2!=null){ ListNode t = p2.next; p2.next = p1; p1 = p2; p2 = t; }   return p1; }public ListNode reverseList(ListNode head) { … Read more

LeetCode – Isomorphic Strings (Java)

Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the characters in s can be replaced to get t. For example,”egg” and “add” are isomorphic, “foo” and “bar” are not. Java Solution 1 We can define a map which tracks the char-char mappings. If a value is already … Read more

LeetCode – Implement Trie (Prefix Tree) (Java)

Implement a trie with insert, search, and startsWith methods. Java Solution 1 A trie node should contains the character, its children and the flag that marks if it is a leaf node. You can use the trie in the following diagram to walk though the Java solution. class TrieNode { char c; HashMap<Character, TrieNode> children … Read more

LeetCode – Shortest Distance from All Buildings (Java)

Java Solution This problem can be solved by BFS. We define one matrix for tracking the distance from each building, and another matrix for tracking the number of buildings which can be reached. public int shortestDistance(int[][] grid) { int[][] distance = new int[grid.length][grid[0].length]; int[][] reach = new int[grid.length][grid[0].length];     int numBuilding = 0; for … Read more

LeetCode – Recover Binary Search Tree (Java)

Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Java Solution Inorder traveral will return values in an increasing order. So if an element is less than its previous element,the previous element is a swapped node. public class Solution { TreeNode first; TreeNode second; TreeNode … Read more