408. Valid Word Abbreviation

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;
        
    }
}
相關文章
相關標籤/搜索