leetcode 算法题408 (简单101) 有效单词缩写

leetcode 算法题408 (简单101) 有效单词缩写

  • 题目介绍
给一个 非空 字符串 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%的用户

你可能感兴趣的:(#,leetcode,简单,leetcode)