My code:
public class Solution {
public boolean validWordAbbreviation(String word, String abbr) {
int wi = 0;
int ai = 0;
int cnt = 0;
while (ai < abbr.length()) {
while (ai < abbr.length() && Character.isDigit(abbr.charAt(ai))) {
if (cnt == 0 && abbr.charAt(ai) == '0') {
return false;
}
cnt = 10 * cnt + abbr.charAt(ai) - '0';
ai++;
}
wi += cnt;
cnt = 0;
if (ai < abbr.length()) {
if (wi >= word.length()) {
return false;
}
else if (word.charAt(wi) != abbr.charAt(ai)) {
return false;
}
else {
wi++;
ai++;
}
}
}
return wi == word.length();
}
}
reference:
https://discuss.leetcode.com/topic/61435/simplest-java-solution-so-far
没做出来。
差点做出来。卡在了一个问题上。 可能会出现 015 这样的数字,这是错的。
Anyway, Good luck, Richardo! -- 10/21/2016