字符串中的第一个唯一字符&&有效的字母异位词(多思路)

简介: 字符串中的第一个唯一字符&&有效的字母异位词(多思路)

字符串中的第一个唯一字符


给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

示例 1:

输入: s = "leetcode"

输出: 0

示例 2:

输入: s = "loveleetcode"

输出: 2

示例 3:

输入: s = "aabb"

输出: -1

提示:

1 <= s.length <= 105

s 只包含小写字母

初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台

image.png

编辑

思路一:将对应位置的字符存放在对应的int类型的数组中并记录他出现的次数


image.png

编辑

class Solution {
    public int firstUniqChar(String s) {
        //一共26个字符创建26个元素的大小就好
        int[] count=new int[26];
        char[] toChar=s.toCharArray();
        for(int i=0;i<s.length();i++) {          
            count[toChar[i]-'a']++;
        }
        for(int i=0;i<s.length();i++) {
            if(count[toChar[i]-'a']==1) {
                return i;
            }
        }
            return -1;
    }
}

image.png

编辑

有效的字母异位词


初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台

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

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"

输出: true

示例 2:

输入: s = "rat", t = "car"

输出: false

提示:

1 <= s.length, t.length <= 5 * 104

s 和 t 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

思路一:(先排序在比较)将两个字符串转化成数组进行排序,然后在使用equals方法比较数组内容是否相同


image.png

编辑

class Solution {
    public boolean isAnagram(String s, String t) {
        char[] sChar=s.toCharArray();
        char[] tChar=t.toCharArray();
        Arrays.sort(sChar);
        Arrays.sort(tChar);
        return Arrays.equals(sChar,tChar);
    }
}

思路二:用一个int数组统计一个字符串中每一个字符出现的次数,然后遍历另一个字符串,每次扫描到一个字符就让其在int数组出现的次数减一。如果全部遍历完成就算是完全匹配,如果期间出现一个字符匹配出现次数为0说明两个字符串不同返回flase


image.png

编辑

image.png

编辑

class Solution {
    public boolean isAnagram(String s, String t) {
        int sLength=s.length();
        int tLength=t.length();
        if(sLength!=tLength) return false;
        char[] sChar=s.toCharArray();
        char[] tChar=t.toCharArray();
        int[] recorderArr=new int[26];
        for(int i=0;i<sLength;i++) {
            recorderArr[sChar[i]-'a']++;
        }
        char temp;
        for(int i=0;i<tLength;i++) {
            temp=tChar[i];
            //如果出现次数为0就代表失败比如”ab“和”bb“,一个字符出现的次数是固定的减完了肯定是0如果 再出现匹配肯定是字符串不相同
            if(recorderArr[temp-'a']==0) {
                return false;
            }else {
                recorderArr[temp-'a']--;
            }
        }
        return true;
    }
}


相关文章
|
并行计算 量子技术 数据安全/隐私保护
量子计算与量子密码(入门级-少图版)(2)
量子计算与量子密码(入门级-少图版)(2)
551 1
|
10月前
|
存储 人工智能 数据管理
媒体声音|专访阿里云数据库周文超博士:AI就绪的智能数据平台设计思路
在生成式AI的浪潮中,数据的重要性日益凸显。大模型在实际业务场景的落地过程中,必须有海量数据的支撑:经过训练、推理和分析等一系列复杂的数据处理过程,才能最终产生业务价值。事实上,大模型本身就是数据处理后的产物,以数据驱动的决策与创新需要通过更智能的平台解决数据多模处理、实时分析等问题,这正是以阿里云为代表的企业推动 “Data+AI”融合战略的核心动因。
|
11月前
|
数据挖掘 BI
.net8 Syncfusion生成pdf/doc/xls/ppt最新版本
通过使用 Syncfusion,您可以高效地生成各种文档,满足不同的业务需求。这些工具不仅易于使用,还具有高性能和高度可扩展性,是处理文档的理想选择。
395 16
|
监控 Oracle Java
(一)JVM成神路之初识虚拟机 - 探寻Java虚拟机的前世今生之秘
JVM(Java Virtual Machine)Java虚拟机的概念大家都不陌生,Java之所以可以做到“一次编译,到处运行”的跨平台性,其根本原因就在于JVM。JVM是建立在操作系统(OS)之上的,Java虚拟机屏蔽了开发人员与操作系统的直接接触,我们在通过Java编写程序时,只需要负责编写Java代码即可,关于具体的执行则会由JVM加载字节码后翻译成机械指令交给OS执行。
401 1
|
存储 算法 JavaScript
IT基础知识入门:为IT小白打造的知识宝典
IT基础知识入门:为IT小白打造的知识宝典
562 4
|
Java 关系型数据库 数据库
基于springboot漫画管理系统
基于springboot漫画管理系统
|
存储 Kubernetes 应用服务中间件
Ingress-Nginx使用指南上篇
关于Ingress-Nginx在Kubernetes中的使用指南,涵盖了从基础安装到高级特性配置的详细步骤和实战案例。
4928 3
Ingress-Nginx使用指南上篇
|
SQL 移动开发 Java
“\r\n### Error updating database. ,解决问题的思路在于认真参考给的错误提示,看错误提示,这里我的数据表,没有写primary key 导致的
“\r\n### Error updating database. ,解决问题的思路在于认真参考给的错误提示,看错误提示,这里我的数据表,没有写primary key 导致的
|
存储 弹性计算 运维
阿里云面向企业发布首台云电脑“无影”,企业办公型1元起
阿里云面向企业发布首台云电脑“无影”,企业办公型1元起,阿里云推出无影云电脑,很多用户不清楚云电脑是什么,云电脑是一种安全高效的云上桌面服务,一般用于企业办公。云电脑支持快速便捷的桌面环境创建、部署、统一管控与运维。企业选择云电脑无需前期传统硬件投资,云电脑可以快速构建安全、高性能、低成本的企业桌面办公体系
532 3
|
Java 测试技术 Docker
java实现线上环境远程debug调试
java实现线上环境远程debug调试
585 0