给一个 非空 字符串 s 和一个单词缩写 abbr ,
判断这个缩写是否可以是给定单词的缩写。
字符串 "word" 的所有有效缩写为:
["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d",
"wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]
注意单词 "word" 的所有有效缩写仅包含以上这些。
任何其他的字符串都不是 "word" 的有效缩写。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-word-abbreviation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给定 s = “internationalization”, abbr = “i12iz4n”:
函数返回 true.
给定 s = “apple”, abbr = “a2e”:
函数返回 false.
假设字符串 s 仅包含小写字母且 abbr 只包含小写字母和数字。
/**
* @param {string} word
* @param {string} abbr
* @return {boolean}
*/
var validWordAbbreviation = function(word, abbr) {
let i = j = 0, number = '';
if(word.length < abbr.length) {
return false;
}
while(i < abbr.length && j < word.length) {
if(isNumber(abbr.charCodeAt(i))) {
if(!number && abbr[i] === '0') {
return false;
}
number += abbr[i++];
} else {
if(number) {
j += parseInt(number);
number = '';
}
if(word[j++] !== abbr[i++]) {
return false;
}
}
}
if(number) {
return parseInt(number) === word.length - j;
}
return true;
};
const isNumber = code => {
return code >= 48 && code <= 57;
}
执行用时 : 68 ms, 在所有 JavaScript 提交中击败了93.55%的用户
内存消耗 : 33.8 MB, 在所有 JavaScript 提交中击败了100.00%的用户