Given a non-empty string s and an abbreviation abbr, return whether the string matches with the given abbreviation. A string such as "word" contains only the following valid abbreviations: ["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", "wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"] Notice that only the above abbreviations are valid abbreviations of the string "word". Any other string is not a valid abbreviation of "word". Note: Assume s contains only lowercase letters and abbr contains only lowercase letters and digits. Example 1: Given s = "internationalization", abbr = "i12iz4n": Return true. Example 2: Given s = "apple", abbr = "a2e": Return false. class Solution { public boolean validWordAbbreviation(String word, String abbr) { if(word == null || abbr == null) return false; int num = 0; int index = 0; for(char c : abbr.toCharArray()){ if(c == '0' && num == 0) return false; if(c >= '0' && c <= '9'){ // its a number num = num * 10 + (c - '0'); }else{ index += num; if(index >= word.length() || c != word.charAt(index)) return false; num = 0; index++; } } return index + num == word.length() ? true : false; } }