当前位置: 首页 > article >正文

算法—有效的字母异位词

一道 LeetCode 简单题,题目链接:https://leetcode.cn/problems/valid-anagram/description/

题目

给定两个字符串 st ,编写一个函数来判断 s 是否是 t 的字母异位词。st 仅包含小写字母。

示例1:

输入: s = “anagram”, t = “nagaram”

输出: true

示例2:

输入: s = “rat”, t = “car”

输出: false

思路

先来分析一下题目:”字母异位“意思就是两个字符串中的某些字符只是位置不同,但是个数和种类都是一样的。

我的思路

分为两个条件判断:

  1. 判断字符个数是不是一样的,不一样就不是异位词
  2. 判断字符种类是不是一样的,如果都包含同样的字符,只是顺序不同,直接返回。

代码实现:

  1. 首先判断两个字符长度,不一样,返回 false
  2. 用查询表的思路,因为都是小写字母,所以只需要定义一个长度 26 的整数数组
  3. 先遍历字符串 s,每个字符减去小写字母 a,就是这个字符在数组中的索引位置,只要有这个字符,对应的索引就自增 1
  4. 再遍历字符串 t,字符对应的索引位置自减 1
  5. 最后,判断这个整数数组中,有没有不是 0 的数,如果有,就返回 false
  6. 遍历结束,返回 true

代码

class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        char[] arr = new char[26];
        for (char c : s.toCharArray()) {
            arr[c - 'a']++;
        }
        for (char c : t.toCharArray()) {
            arr[c - 'a']--;
        }
        for (int i = 0; i < 26; i++) {
            if (arr[i] != 0) {
                return false;
            }
        }
        return true;
    }
}

运行结果及分析

LeetCode 运行结果

时间复杂度: l o g ( ∣ s ∣ + ∣ t ∣ ) log(|s| + |t|) log(s+t)|s||t|分别为各自的字符长度。

空间复杂度: l o g ( 1 ) log(1) log(1),因为只用到了常数级的字符数组。

总结

这是一道简单题,只要思路想清楚,代码实现起来也很简单,没有特别的边界条件需要考虑的,适合新手用来熟悉数据结构。


http://www.kler.cn/a/446604.html

相关文章:

  • 【JavaEE初阶】线程 和 thread
  • CLION中运行远程的GUI程序
  • bestphp‘s revenge
  • .net core在linux导出excel,System.Drawing.Common is not supported on this platform
  • 林子雨-大数据课程实验报告(一)
  • 网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时
  • 一文速通 IIC I2C子系统驱动 通信协议原理 硬件 时序 深度剖析
  • 青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作
  • K8s docker-compose的入门
  • Yolov11学习笔记
  • 使用Redis提升PHP应用的性能
  • SpringBoot02
  • Netdevops入门基础学习03
  • Leaflet的zoom层级-天地图层级之间的关系
  • Micropython RPI-PICO 随记-DS3231和RTC
  • POI-TL插件开发-表格分组插件
  • HTML 面试题全解析
  • Intellij配置scala运行环境
  • 故障诊断 | 一个小创新:特征提取+KAN分类
  • OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
  • Hive其四,Hive的数据导出,案例展示,表类型介绍
  • 3D开发工具HOOPS助力造船业加速设计与数字化转型
  • 告别Zoo of Factor:净化因子分析中的数据挖掘与p值操纵
  • Vue.js前端框架教程2:Vue路由和状态管理库Pinia
  • 开启新征程——QML
  • MvMRL:一种用于分子性质预测的多视图分子表示学习方法