刷题专栏(二十六):字符串中的第一个唯一字符

简介: 刷题专栏(二十六):字符串中的第一个唯一字符

前言

刷题专栏到目前已经是第二十六篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题,是一道关于字符串的一道题,《字符串中的第一个唯一字符》。

此题主要就是要处理字符串的字符。

下面我们就一起来看一下这道题吧。image.png

算法题:字符串中的第一个唯一字符

根据题目的描述来看,是要找出传入的字符串的第一个在全字符串中没有重复字符的字符索引。

要解决这个问题,一般可以通过遍历每一个字符串字符来做一一的判断。

当然这是暴力循环的方式,其实在参数太长的情况下,是不推荐的。

如果不使用暴力循环,那么要使用什么方法呢?

一是可以利用集合存储每个字符,判断出哪些是重复字符,排除掉重复字符,接下来就获取第一个字符索引就可以了。

二是利用队列的方式,通过队列先进先出的特征找出第一个符合要求的字符索引。

代码展示

本次执行的代码如下所示,大家可以自行参考一下。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.firstUniqChar("aabb"));
        System.out.println(solution.firstUniqChar("abcdef"));
        System.out.println(solution.firstUniqChar("leetcode"));
    }
    public int firstUniqChar(String s) {
        for (int i = 0; i < s.length(); i++) {
            System.out.println(s.lastIndexOf(s.charAt(i)));
            if(s.lastIndexOf(s.charAt(i)) == i && s.indexOf(s.charAt(i)) == i){
                return i;
            }
        }
        return -1;
    }
}

代码执行结果

今天的执行结果也非常一般,看来通过循环和indexOf是行不通。image.png

总结

今天的这道题主要就是考察对字符串每一个字符循环保存的熟练程度,关于队列的使用本次并没有说道,大家有兴趣可以自行试一下。

目录
相关文章
|
5月前
|
算法 Java
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
111 2
|
5月前
|
算法 Java
刷题专栏(二):最后一个单词的长度
刷题专栏(二):最后一个单词的长度
34 0
|
5月前
|
算法 Java
刷题专栏(二十八):找到所有数组中消失的数字
刷题专栏(二十八):找到所有数组中消失的数字
102 4
|
5月前
|
算法
刷题专栏(二十四):两个数组的交集
刷题专栏(二十四):两个数组的交集
87 0
|
10月前
|
Cloud Native
【刷题日记】606. 根据二叉树创建字符串
本次刷题日记的第 7 篇,力扣题为:606. 根据二叉树创建字符串 ,简单
|
5月前
|
算法
六六力扣刷题字符串之找出字符串中第一个匹配项的下标
六六力扣刷题字符串之找出字符串中第一个匹配项的下标
39 0
|
5月前
|
机器人 Java
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
46 0
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
|
5月前
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
22 0
|
6月前
|
算法 索引
代码随想录算法训练营第九天 | LeetCode 8. 找出字符串中第一个匹配项的下标、LeetCode 459. 重复的子字符串
代码随想录算法训练营第九天 | LeetCode 8. 找出字符串中第一个匹配项的下标、LeetCode 459. 重复的子字符串
18 0
|
7月前
|
编译器
OJ题库:字符串反转(包含进阶)
OJ题库:字符串反转(包含进阶)
39 0