前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 408. 有效单词缩写

LeetCode 408. 有效单词缩写

作者头像
Michael阿明
发布2020-07-13 16:20:02
1K0
发布2020-07-13 16:20:02
举报

1. 题目

给一个 非空 字符串 s 和一个单词缩写 abbr ,判断这个缩写是否可以是给定单词的缩写。

字符串 “word” 的所有有效缩写为:

代码语言:javascript
复制
["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", 
 "wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]
代码语言:javascript
复制
注意单词 "word" 的所有有效缩写仅包含以上这些。
任何其他的字符串都不是 "word" 的有效缩写。

注意:
假设字符串 s 仅包含小写字母且 abbr 只包含小写字母和数字。

示例 1:
给定 s = "internationalization", abbr = "i12iz4n":
函数返回 true.
 
示例 2:
给定 s = "apple", abbr = "a2e":
函数返回 false.

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-word-abbreviation 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 易错例子
代码语言:javascript
复制
"a"
"01"
预期:
false

"internationalization"
"i5a11o1"
预期:
true
  • 等效长度一致
  • 数字不能有前导零
代码语言:javascript
复制
class Solution {
public:
    bool validWordAbbreviation(string word, string abbr) {
    	int i = 0, n = 0, j = 0;
    	while(i<word.size() && j < abbr.size())
    	{
    		n = 0;
            if(isdigit(abbr[j]))
            {   
                if(abbr[j]=='0')//"a","01"
                    return false;
                while(j < abbr.size() && isdigit(abbr[j]))
                    n = n*10+abbr[j++]-'0';
            }
    		i += n;
    		if(i<word.size() && j<abbr.size() && word[i] != abbr[j])
    			return false;
    		else if((i<word.size()&&j>=abbr.size())||(i>=word.size()&&j<abbr.size()))
    			return false;
            else if(i==word.size() && j==abbr.size())
                return true;//这里加一条,可能以数字结尾,下面++,出了循环,最后条件不成立
            i++,j++;
    	}
    	return i==word.size() && j==abbr.size();
    }
};

4 ms 6 MB

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档