No trick. Pretty straightforward solution. Note when return, we need to check if we've reached both ends of word and it abbreviation.
1: class Solution {
2: public:
3: bool validWordAbbreviation(string word, string abbr) {
4: int i = 0, j = 0;
5: while (i < word.size() && j < abbr.size()) {
6: if (!isNum(abbr[j])) {
7: if (word[i++] != abbr[j++]) return false;
8: } else {
9: if (abbr[j] == '0') return false;
10: int l = 0;
11: while (j < abbr.size() && isNum(abbr[j])) {
12: l = l * 10 + abbr[j++] - '0';
13: }
14: i += l;
15: }
16: }
17: return i == word.size() && j == abbr.size();
18: }
19: bool isNum(char c) {
20: return c >= '0' && c <= '9';
21: }
22: };
No comments:
Post a Comment