前言
刷题专栏到目前已经是第二十六篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天的这道题,是一道关于字符串的一道题,《字符串中的第一个唯一字符》。
此题主要就是要处理字符串的字符。
下面我们就一起来看一下这道题吧。
算法题:字符串中的第一个唯一字符
根据题目的描述来看,是要找出传入的字符串的第一个在全字符串中没有重复字符的字符索引。
要解决这个问题,一般可以通过遍历每一个字符串字符来做一一的判断。
当然这是暴力循环的方式,其实在参数太长的情况下,是不推荐的。
如果不使用暴力循环,那么要使用什么方法呢?
一是可以利用集合存储每个字符,判断出哪些是重复字符,排除掉重复字符,接下来就获取第一个字符索引就可以了。
二是利用队列的方式,通过队列先进先出的特征找出第一个符合要求的字符索引。
代码展示
本次执行的代码如下所示,大家可以自行参考一下。
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是行不通。
总结
今天的这道题主要就是考察对字符串每一个字符循环保存的熟练程度,关于队列的使用本次并没有说道,大家有兴趣可以自行试一下。