LeetCode刷题实战408:有效单词缩写
Given a non-empty string s and an abbreviation abbr, return whether the string matches with the given abbreviation.
示例
示例 1:
给定 s = "internationalization", abbr = "i12iz4n":
函数返回 true.
示例 2:
给定 s = "apple", abbr = "a2e":
函数返回 false.
解题
https://blog.csdn.net/qq_29051413/article/details/108846427
class Solution {
public boolean validWordAbbreviation(String word, String abbr) {
char[] chars = abbr.toCharArray();
int num = 0; // 缩写中的数字,不能出现前导0
int next = 0; // 遍历 chars 的指针
for (char c : chars) {
// 如果是数字,则拼接成最后的样子
if (c >= '0' && c <= '9') {
// 前导0数字不合法
if (num == 0 && c == '0') return false;
num = num * 10 + (c - '0');
continue;
}
next = next + num; // 更新指针
// 如果 next 超出了 word 的长度,说明不是 word 的缩写
// 或者,如果 word 和 abbr 在 next 位置的字符不一致,则说明不是 word 的缩写
if (next >= word.length() || (word.charAt(next) != c)) {
return false;
}
next++;
num = 0;
}
return next + num == word.length();
}
}
评论