【算法】【模拟、字符串、JAVA】力扣2828. 判别首字母缩略词

本文解析了力扣2828题,涉及判断字符串s是否由给定字符串数组words中每个字符串的首字母组成。通过长度判断和字符逐个对比,展示了Java中的字符串操作和List操作,如charAt、get、size等。
摘要由CSDN通过智能技术生成

原题链接


【算法】【模拟、字符串】力扣2828. 判别首字母缩略词

摘要

本文将介绍力扣第2828题,题目要求判断一个字符串是否为由一个字符串数组中每个字符串的首字母组成的缩写。文章将通过解析题目描述和分析给出的Java代码来深入理解问题及解决思路。

题目分析

题目给定一个字符串数组words和一个字符串s,要求判断s是否可以由words数组中每个字符串的首字母按照顺序组成。具体而言,若words数组为[“apple”, “banana”],则字符串"s"可以为"ab",因为它是"apple"的"a"和"banana"的"b"的首字母的组合。而如果words数组为[“bear”, “aardvark”],则字符串"s"不能为"ab",因为"bear"的首字母是"b",而不是"a"。要求实现一个函数,如果swords数组的首字母缩写,则返回true,否则返回false

解题思路

给定的Java代码实现了一个Solution类,其中的isAcronym函数接受一个字符串数组words和一个字符串s,并返回一个布尔值。以下是对代码的详细解析:

class Solution {
    public boolean isAcronym(List<String> words, String s) {
        // 根据题目描述,只要字符串数组words和字符串s长短不一,则必定为false
        if (words.size() != s.length()) return false;

        for (int i = 0; i < words.size(); ++i) {
            String curr_word = words.get(i);
            // 如果s的第i个字符不等于words数组中第i个字符串的首字母,则返回false
            if (s.charAt(i) != curr_word.charAt(0)) return false;
        }
        // 循环结束,说明s是words数组的首字母缩写
        return true;
    }
}

代码解析

  1. 长度判断: 首先,通过 if (words.size() != s.length()) 判断 words 数组和字符串 s 的长度是否相等。若不相等,直接返回 false,因为题目明确说明只有长度相等时才可能为首字母缩写。

  2. 遍历判断: 接下来,通过 for 循环遍历 words 数组中的每个字符串。在循环中,通过 s.charAt(i) != curr_word.charAt(0) 判断 s 的第 i 个字符是否等于 words 数组中第 i 个字符串的首字母。若不相等,说明 s 不是 words 数组的首字母缩写,直接返回 false

  3. 返回结果: 若循环结束,说明 s 是由 words 数组中每个字符串的首字母按顺序组成的缩写,返回 true

总结

该算法通过简单的长度判断和字符对比,实现了对给定字符串是否为字符串数组的首字母缩写的判断。通过循环遍历,逐一比较每个字符,确保它们的顺序和首字母一致。算法的时间复杂度为 O(n),其中 n 为字符串数组的长度。

本题的Java字符串操作解析

在给定的Java代码中,涉及了对字符串的基本操作,以下是对这些操作的详细解释:

// 获取字符串s的第i个字符
s.charAt(i)

这个方法返回指定索引位置的字符。在代码中,通过s.charAt(i)获取了字符串s的第i个字符。

// 获取字符串curr_word的首字母
curr_word.charAt(0)

这个方法返回字符串的指定索引位置的字符。在代码中,通过curr_word.charAt(0)获取了字符串curr_word的首字母。

本题的Java List<> 操作解析

在给定的Java代码中,使用了 List<String> 类型的数据结构,以下是对这些操作的详细解释:

// 获取List<String>中索引为i的元素
words.get(i)

这个方法返回指定索引位置的元素。在代码中,通过words.get(i)获取了列表words中索引为i的字符串元素。

// 获取List<String>的大小
words.size()

这个方法返回列表的元素个数。在代码中,通过words.size()获取了列表words的大小,即包含的字符串元素的数量。

总结

Java中的字符串操作主要涉及到 charAt 方法,用于获取字符串中特定位置的字符。而对于 List<String> 类型的操作,主要使用了 get 方法获取指定索引位置的元素和 size 方法获取列表的大小。这些操作在解决字符串比对和遍历列表的问题中起到了关键作用。

其它常用的 List<> 操作解析

除了在给定的代码中使用的 getsize 方法之外,Java的 List<> 还提供了许多其他常用的操作方法。以下是一些常见的 List<> 操作:

// 添加元素到List的末尾
words.add("newWord");

这个方法用于将指定的元素添加到列表的末尾。

// 在指定位置插入元素
words.add(2, "insertedWord");

这个方法用于将指定的元素插入列表的指定位置。

// 移除指定位置的元素
words.remove(1);

这个方法用于移除列表中指定位置的元素。

// 判断列表是否包含指定元素
boolean containsWord = words.contains("targetWord");

这个方法用于检查列表是否包含指定的元素,返回 truefalse

其它常用的 String 操作解析

除了在给定的代码中使用的 charAt 方法之外,Java的字符串类还提供了一些其他常用的操作方法。以下是一些常见的字符串操作:

// 获取字符串的长度
int length = s.length();

这个方法返回字符串的长度,即包含的字符个数。

// 字符串连接
String newString = s.concat(" additional");

这个方法用于将指定的字符串连接到原始字符串的末尾。

// 字符串切割
String[] parts = s.split(" ");

这个方法根据指定的分隔符将字符串拆分为子字符串数组。

// 判断字符串是否以指定前缀开头
boolean startsWith = s.startsWith("prefix");

这个方法用于检查字符串是否以指定的前缀开头,返回 truefalse

总结

Java中的 List<> 和字符串操作提供了丰富的方法,包括添加、插入、移除元素等列表操作,以及获取字符串长度、连接、切割等字符串操作。这些方法在不同的场景中都能发挥重要作用,为开发人员提供了丰富的工具集。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值