387. First Unique Character in a String

2023-10-30

暴力解法

两个循环

hashmap + 两个循环

public int solution_1(String s){

        if(s==null || s.length()==0){
            return -1;
      }
      Map<Character, Integer> record = new HashMap<>();
        // 第一次进行遍历主要是关注统计数目相关的情况等信息

      for(int i=0;i<s.length();i++){
            record.put(s.charAt(i), record.getOrDefault(s.charAt(i),0)+1);
        }
        //第二次遍历统计个数等于1的情况
      for(int i =0;i<s.length();i++){
          if(record.get(s.charAt(i))==1){
              return i;
          }
      }
      return -1;
  }

一个辅助数组 + 两个循环

充分利用数组的特性情况进行记录, 将数组的下标转换为标记一个字母

a -----z 单词
0------ 25 数组下标
数组内容
1,2 ==== 对应单词的出现次数情况

public  int solution_3(String s){

        if(s==null || s.length()==0){
            return -1;
        }
        int [] hashtable = new int[26];

        // 字母与数字之间的映射关系,就是第一个字母

        for( int i=0;i<s.length();i++){
            //  说白了就是利用数组坐标来标记一个字母吗,就类似于在hashmap 我们需要两个结构来标记一个数组的基本情况一样
            hashtable[s.charAt(i)-'a']++;
        }
        for(int i=0;i<s.length();i++){
            if(hashtable[s.charAt(i)-'a']==1)
                         {return i;}
        }
        return -1;
    }

充分利用数组下标

充分利用数组下标与来记录每个单词

比如int [26]

index =0 对应字母 a 就跟map 当中的key一样 int [index] 代表map当中的value

class Solution {
    public int firstUniqChar(String s) {
        if(s==null || s.length()==0)
            return -1;
        int []  result = new int[26];
        for(int i=0;i<s.length();i++){
            // 进行统计计数这种心情看过
              result[s.charAt(i)-'a']++;
        }
       // 遍历整个字符串的基本情况内容             
        for(int i=0;i<s.length();i++){
            // 进行统计计数这种心情看过
             if(result[s.charAt(i)-'a']==1)
                 return i;
        }
    return -1;
    }
    
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

387. First Unique Character in a String 的相关文章

随机推荐

  • 【满分】【华为OD机试真题2023 JAVA&JS】预定酒店

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 预定酒店 知识点排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 放暑假了 小明决定到某旅游景点游玩 他在网上搜索到了各种价位的酒店 长度为n的数组A 他的心
  • OpenAI-ChatGPT最新官方接口《审核机制》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(七)(附源码)

    Moderation 审核机制 前言 Introduction 导言 Quickstart 快速开始 其它资料下载 ChatGPT 作为一个大型人工智能语言模型 在提供用户便捷交流的同时也承担着内容审核的责任 为了保护用户和社会免受不良信息
  • 演讲:文档什么鬼分享会

    作为一个初创技术公司 我司的信息管理水平 基本还停留在茹毛饮血的原始水平 领导让我给全公司的同事做一个分享 说是要提升一下文档意识的水位 作为一只热爱解决具体问题的攻城狮 竟然勉强我去讲 哲学 瞬间化身嘤嘤怪 不过转念回想起当年挥斥方遒 写
  • Learning Ceph

    Author 海峰 http weibo com 344736086 参考章宇兄的开源项目学习ABC的方法来对ceph进行简单的学习与分析 下面是分析过程中画的图片
  • RBF神经网络对iris鸢尾花数据集进行分类识别

    RBF神经网络对iris鸢尾花数据集进行分类 http blog csdn net fubin0000 设计要求 iris以鸢尾花的特征作为数据来源 数据集包含150个数据集 分为3类 setosa versicolor virginica
  • Qt 界面加载卡顿或刷新问题

    主要有以下几个解决方案可以去尝试下 一 设置WA Mapped属性 让界面可以及时更新 void CMainStaticsWindows showEvent QShowEvent event 这句话解决第二次打开窗口没有刷新情况 窗口一片空
  • java fx数据库,Java FX中的数据库连接最佳实践

    目前我也在使用数据库连接的JavaFX应用程序 我选择的方式如下 创建一个SQL Controller Class 这个类应该包含处理你的SQL数据的所有东西 例如 一个连接方法来打开一个连接 一个close方法也没有错 在所有控制器类中使
  • Button 点击没有反应

    原因 检查一下你是不是把button TargetGraphic目标翻转了180度 因为UGUI的射线检测默认只检测正面 解决办法 在你的button检测目标也就是 TargetGraphic目标上加个GraphicRayCaster组件
  • 关于Java环境变量配置之后在CMD中键入JavaC、Java -version无反应

    本机装的是jdk 11 安装后配置环境 在cmd中键入JavaC Java version均无反应 如下图 上网查阅多方资料 终于在知乎大佬的分享贴下解决此问题 鸣谢 步骤如下 右键点击此电脑 gt 属性 gt 高级系统设置 gt 环境配置
  • CCF-CSP201903-4-消息传递接口

    首先应当思考的是如何对输入数据进行存储 通过样例输入可以看出 每一个进程执行的操作数量都是不定的 因此可以采用 vectorg N 进行存储 其中g i 表示i号进程应执行操作 也可以采用queueq N 进行存储q i 表示i号进程应执行
  • 传感器学习——ESP8266(无线串口使用)

    ESP8266模块是一款高性能的WIFI串口模块 只要知道串口怎么编程使用 就可以实现所谓的透明传输 将usb转ttl如下连接 USB转TTL模块上有3 3V和5V两个引脚可以作为VCC 但是一般选取5V作为VCC AT指令 在使用USB转
  • Python案例分析,streamlit模块,Python制作销售数据可视化看板

    前言 Python实战案例 streamlit模块 Python制作销售数据可视化看板 让我们愉快地开始吧 开发工具 Python版本 3 6 4 相关模块 streamlit模块 Plotly模块 Pandas模块 以及一些Python自
  • 比较两个float 2010-9-15 12:01

    float 类型不能比较相等或不等 但可以比较 gt lt gt lt 用 从语法上说没错 但是本来应该相等的两个浮点数由于计算机内部表示的原因可能略有微小的误差 这时用 就会认为它们不等 应该使用两个浮点数之间的差异的绝对值小于某个可以接
  • matlab基础语法总结

    文章目录 1 界面认识 2 变量命名 3 数据类型 4 矩阵构造和四则运算 5 程序结构 6 二维平面绘图 7 三维立体绘图 8 线性规划 9 积分 1 界面认识 命令行输入clc 清除命令行窗口 命令行输入clear all 清除右侧工作
  • IDEA 中 JUnit 的使用

    文章目录 1 JUnit 是什么 2 IDEA 的 JUnit 配置 3 测试类的生成 4 测试覆盖率的查看 1 JUnit 是什么 JUnit 是一个 Java 语言的回归测试框架 regression testing framework
  • 漏洞检查win

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 漏洞 SMB Signing not required 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门技术也越来
  • linux oracle pdb安装,Linux下安装Oracle(CentOS-Oracle 12c)的方法

    第一步 网络连接 在我的上一篇博客中有介绍 不再多说 网络连接的目的 为了能使用yum命令 在网上直接下载文件 第二步 前往oracle官网下载12c database服务器端的两个文件 安装在Linux linuxamd64 12102
  • 什么是WBS?

    我们可以从一下3点来说明WBS是什么 1 定义 指组织和定义整个项目范围的可交付成果 以逻辑的形式列出必须进行的全部活动的结构 2 图示 从图中可以看出WBS图是一个自上而下逐步分解的解构 3 作用 将大系统变成具体的小工作单元 是复杂变简
  • 元宇宙群涉及到技术

    元宇宙六大核心技术包括 1 物联网技术 分为感知层 网络层 应用层 2 区块链技术 算法及时间戳技术 数据传播及验证技术 共识机制 分布式存储 智能合约 分布式账本等 3 交互技术 VR虚拟现实技术 AR虚拟现实技术 MR混合现实技术 全息
  • 387. First Unique Character in a String

    暴力解法 两个循环 hashmap 两个循环 public int solution 1 String s if s null s length 0 return 1 Map