首页 > 代码库 > 408. Valid Word Abbreviation
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.
是时候该总结一下string类的问题了由Easy到hard
这道题有几个可以学到的点:
第一:在string中判断是否为数字我自己写代码的时候用的isdigit()函数,碰到多位数的时候从最后加好的string变为int,我们还可以用 if(str[i] >= 0 && str[i] <= 9)来判断,转化成int的时候也可以直接使用str[i] - ‘0‘来转换。
第二:增加位数的时候可以用cnt = 10*cnt + str[i] - ‘0‘来更新 这种方法很常见
来看代码:
bool validWordAbbreviation(string word, string abbr) { int pt1 = 0, pt2 = 0; while(pt1 < word.size() && pt2 < abbr.size()) { if(‘0‘ <= abbr[pt2] && abbr[pt2] <= ‘9‘) { if(abbr[pt2] == ‘0‘) return false; int value = http://www.mamicode.com/0; while(pt2 < abbr.size() && ‘0‘ <= abbr[pt2] && abbr[pt2] <= ‘9‘) { value = value*10 + abbr[pt2]-‘0‘; pt2++; } pt1 += value; } else { if(word[pt1++] != abbr[pt2++]) return false; } } return pt1 == word.size() && pt2 == abbr.size(); }
408. Valid Word Abbreviation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。