最全蓝桥杯入门即劝退(十二)情感丰富的文字

文章介绍了如何通过双指针法和字符计数判断一个字符串数组中哪些单词可以通过字母扩张得到给定的字符串。主要涉及字符串比较、长度判断和字符数量匹配等技术应用。
摘要由CSDN通过智能技术生成

输入一组查询单词,输出其中可扩张的单词数量。

示例:

**输入:** 
s = "heeellooo"
words = ["hello", "hi", "helo"]
**输出:**1
**解释**:
我们能通过扩张 "hello" 的 "e" 和 "o" 来得到 "heeellooo"。
我们不能通过扩张 "helo" 来得到 "heeellooo" 因为 "ll" 的长度小于 3 。

提示:

  • 1 <= s.length, words.length <= 100
  • 1 <= words[i].length <= 100
  • s 和所有在 words 中的单词都只由小写字母组成。

解题思路:1、本题题意 即是从字符串数组中找到若干个可以通过字母扩张得到原字符串的数量

2、本题可以使用双指针来完成,即指定 i、j 分别为给定单词以及数组中某个字符串的的指针,指向第一个字符。

3、可以编写一个boolean方法来判断符合条件的字符串数量。

4、当给定字符小于某个字符串时,即可判断该字符串不可能是符合条件的,直接return。

5、设置Count_s、Count_t来累积初始两个字符串的相同字母数量

6、展开分类讨论,因为如题当s中字母数量小于3时无法扩张,即如果需要符合条件,t字符串中某字母数量需与s相同。

7、如果Count_s小于Count_t,直接return,如果Count_s与Count_t数量不同,且Count_s<3,即可判断该字符串不合条件。

8、最后如果循环结束都为边界值,即比对都符合条件,则为true,否则为false。

代码实现

 public static int expressiveWords(String s, String[] words) {
        int count=0;
        for (String str:words){
            if (ComPare(s,str))
                count++;
        }
        return count;
    }

    public static boolean ComPare(String s,String t){
        if (s.length()<t.length())
            return false;//长度大于S不合条件
        int i=0,j=0;
        while (i<s.length()&&j<t.length()) {
            if (s.charAt(i) != t.charAt(j))
                return false;//开始即不相同,不合条件
            
            char ch=s.charAt(i);
            int Count_s=0;
            while (i<s.length()&&s.charAt(i)==ch){
                ++Count_s;
                ++i;
            }
            int Count_t=0;
            while (j<t.length()&&t.charAt(j)==ch){
                ++Count_t;
                ++j;
            }
            if (Count_t>Count_s)//相同字母大于s相同字母数量,不合条件


![img](https://img-blog.csdnimg.cn/img_convert/edfffb9db7486439c98e9daed196c5c8.png)
![img](https://img-blog.csdnimg.cn/img_convert/cc4d7a5420bfeee4b65b61ffdc20fe5e.png)
![img](https://img-blog.csdnimg.cn/img_convert/9b33574b8597073cdff5307b784e9e9c.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值