Valid Word Abbreviation
给一个abbr和一个word, 问abbr是不是word的缩写. 这个题太傻逼了, 各种corner cases. 而且还有’01’ ‘a’ 这种带leading 0的.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
class Solution { public boolean validWordAbbreviation(String word, String abbr) { if(abbr.length() > word.length()) return false; int cur = 0; for(int i = 0; i < abbr.length();) { if(abbr.charAt(i) >= 'a' && abbr.charAt(i) <='z') { if(cur < word.length() && abbr.charAt(i) != word.charAt(cur)) return false; else{ cur++; i++; } }else if(abbr.charAt(i) > '0' && abbr.charAt(i) <= '9') { int right = i; while(right < abbr.length() && abbr.charAt(right) >= '0' && abbr.charAt(right) <= '9'){ right++; } cur += Integer.valueOf(abbr.substring(i, right)); i = right; }else return false; } return cur == word.length(); } } |