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

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

前言

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

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

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

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

总结

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

目录
相关文章
|
存储 JavaScript 前端开发
【前端系列】- 富文本组件(mavon-editor)
mavon-editor是一款基于vue的markdown编辑器,可以用来做文本的编辑,比如是某种业务需要发送公告、个人博客等,都可以用到,操作也十分简单。
4667 0
【前端系列】- 富文本组件(mavon-editor)
|
存储 Ruby 内存技术
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统
462 1
|
缓存 JavaScript Java
SpringBoot集成onlyoffice实现word文档编辑保存
SpringBoot集成onlyoffice实现word文档编辑保存
2333 0
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
636 0
|
安全 程序员 API
|
11月前
|
IDE Java 编译器
关于win10下codeblock的中文乱码问题解决
乱码问题通常是由于不同平台编码不一致导致的。本文介绍了如何在 Code::Blocks 中解决这一问题,具体步骤包括选择编译器、配置编译选项,并添加 `-finput-charset=UTF-8` 和 `-fexec-charset=GBK` 参数。此外,还补充了一些常见的字符集知识。
|
编译器 C语言 C++
什么是函数声明和定义
【10月更文挑战第19天】什么是函数声明和定义
503 0
markdown之mermaid
markdown之mermaid
261 0
|
安全 Nacos 数据库
探索 Nacos反序列化漏洞CNVD-2023-45001
Nacos 2.1.0版本遭遇高危反序列化漏洞(CNVD-2023-45001),允许攻击者通过7848端口执行远程代码。影响1.4.0至1.4.6及2.0.0至2.2.3版本。建议用户升级至2.2.3,下载链接:https://github.com/alibaba/nacos/releases/tag/2.2.3。升级过程平滑,数据库无须调整,仅需按文档(https://nacos.io/zh-cn/docs/v2/guide/user/auth.html)配置鉴权。重视安全修复,确保系统安全。
1273 7
 探索 Nacos反序列化漏洞CNVD-2023-45001
|
资源调度 JavaScript 前端开发
Vue2项目使用v-viewer插件实现图片预览、切换、缩放、旋转...
这篇文章介绍了在Vue 2项目中如何通过`v-viewer`插件实现图片的预览、切换、缩放、旋转等功能,并提供了插件的安装、配置和使用方法。
4043 0
Vue2项目使用v-viewer插件实现图片预览、切换、缩放、旋转...