每日一练 2024.5.16 (补2024.5.13)

题目:

给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。

如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,"ab" 可以由 ["apple", "banana"] 形成,但是无法从 ["bear", "aardvark"] 形成。

如果 s 是 words 的首字母缩略词,返回 true ;否则,返回 false 。

示例 1:

输入:words = ["alice","bob","charlie"], s = "abc"
输出:true
解释:words 中 "alice"、"bob" 和 "charlie" 的第一个字符分别是 'a'、'b' 和 'c'。因此,s = "abc" 是首字母缩略词。 

示例 2:

输入:words = ["an","apple"], s = "a"
输出:false
解释:words 中 "an" 和 "apple" 的第一个字符分别是 'a' 和 'a'。
串联这些字符形成的首字母缩略词是 "aa" 。
因此,s = "a" 不是首字母缩略词。

示例 3:

输入:words = ["never","gonna","give","up","on","you"], s = "ngguoy"
输出:true
解释:串联数组 words 中每个字符串的第一个字符,得到字符串 "ngguoy" 。
因此,s = "ngguoy" 是首字母缩略词。 

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 10
  • 1 <= s.length <= 100
  • words[i] 和 s 由小写英文字母组成
解题:
  1. 创建一个空字符串,用于保存每个单词的首字母。

  2. 遍历输入的单词列表,将每个单词的首字母添加到我们在第一步中创建的字符串中。可以通过获取每个单词的第一个字符(索引为0的字符)来得到首字母。

  3. 遍历结束后,我们会得到一个由每个单词首字母组成的新字符串。

  4. 最后,我们就可以将这个新字符串与输入的字符串s进行比较。如果它们完全相同,则说明s是单词列表的首字母缩略词,返回true;如果不相同,则说明s不是首字母缩略词,返回false

  5. 整个过程的时间复杂度为O(n),其中n是单词列表中的单词数量,因为我们需要遍历单词列表来

代码:
class Solution {
    public boolean isAcronym(List<String> words, String s) {
        // 遍历
        int n = words.size();
        if(n != s.length()) return false;
        for(int i = 0; i < n; ++i){
            if(words.get(i).charAt(0) != s.charAt(i)) return false;
        }
        return true;
    }
}
知识点讲解:
  1. 字符串处理:操作和处理字符串是此题解中的关键部分,包括访问字符串的首字符和构建新字符串。

  2. 循环结构:使用循环遍历列表中的每个字符串,这是处理集合中元素的常用方法。

  3. 字符串比较:通过equals方法比较两个字符串是否相等。这是判断两个字符串内容是否完全相同的标准做法。

  4. StringBuilder:在构建新字符串时使用StringBuilder以提高性能。相比于直接用字符串连接操作(+),StringBuilder在循环中对字符串进行拼接时更加高效。

  5. 数组与列表处理:遍历数组或列表并提取信息是解决此类问题的常见步骤。

  6. 条件语句:使用条件判断(if-else)来决定何时返回truefalse

以下表格总结了代码中用到的知识点:

知识点描述应用
字符串处理操作和处理字符串来访问特定的字符或构建新的字符串字符串。获取每个单词的首字符;使用StringBuilder拼接字符。
循环结构使用循环结构遍历集合或数组中的元素。遍历words列表中的每个单词来提取并拼接它们的首字母。
字符串比较检查两个字符串是否相等。使用.equals()方法比较生成的首字母缩略词和给定的字符串s是否相同。
StringBuilder提供了一个可变的字符序列。用于在循环中高效地构建和修改字符串。创建一个StringBuilder实例用于拼接首字母,最终通过.toString()转换为字符串。
数组与列表处理处理一系列数据时,经常会存储在数组或列表结构中,并需要遍历它们以处理每个元素。遍历输入的单词列表words
条件语句根据条件执行不同的代码块,通常用于决策制定。根据生成的字符串和s的比较结果返回truefalse

2024.5.13

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值