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

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

前言

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

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

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

下面我们就一起来看一下这道题吧。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

总结

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

目录
打赏
0
1
1
0
2
分享
相关文章
|
9月前
|
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
145 2
|
9月前
|
刷题专栏(二十四):两个数组的交集
刷题专栏(二十四):两个数组的交集
118 0
|
9月前
|
六六力扣刷题字符串之重复的子字符串
六六力扣刷题字符串之重复的子字符串
76 0
|
9月前
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
剑指Offer LeetCode 面试题50. 第一个只出现一次的字符
42 0
代码随想录算法训练营第九天 | LeetCode 8. 找出字符串中第一个匹配项的下标、LeetCode 459. 重复的子字符串
代码随想录算法训练营第九天 | LeetCode 8. 找出字符串中第一个匹配项的下标、LeetCode 459. 重复的子字符串
49 0
【刷题日记】415. 字符串相加
本次刷题日记的第 48 篇,力扣题为:415. 字符串相加 ,简单
105 0
删除字符串中的所有相邻重复项(代码随想录力扣刷题)
删除字符串中的所有相邻重复项(代码随想录力扣刷题)
#yyds干货盘点# 前端歌谣的刷题之路-第四十二题-去掉字符串两端空格
#yyds干货盘点# 前端歌谣的刷题之路-第四十二题-去掉字符串两端空格
109 0
#yyds干货盘点# 前端歌谣的刷题之路-第四十二题-去掉字符串两端空格
LeetCode每日一题——1704. 判断字符串的两半是否相似
给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。
101 0
LeetCode每日一题——791. 自定义字符串排序
给定两个字符串 order 和 s 。order 的所有单词都是 唯一 的,并且以前按照一些自定义的顺序排序。
98 0

热门文章

最新文章