【剑指offer】- 第一个只出现一次的字符位置-34/67

简介: 【剑指offer】- 第一个只出现一次的字符位置-34/67

1. 题目描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

2. 题目解析

  1. 给定一个字符串,让你求这个字符串只出现一次的字符,我们一般的想法都是遍历一遍字符串,依次和后面的相比较,如果一样的话,就去掉。这里的时间复杂度为(On*n)
  2. 我们可以通过java中的hashmap去做,遍历一遍字符串,判断这个字符在不在hashmap中,如果不在,则输入map.put(str.charAt(i), 1);如果在,则int x = map.get(str.charAt(i)); map.put(str.charAt(i), ++x);
  3. 因为hashmap是无序的,所以我们最后需要再遍历一遍字符串,如果当前map.get(str.charAt(i)) == 1我们直接返回i,遍历完后,返回-1

3. 题目代码

import java.util.HashMap;
public class Solution {
   public int FirstNotRepeatingChar(String str) {
    HashMap<Character, Integer> map = new HashMap<>();
    for (int i = 0; i < str.length(); i++) {
      if (map.containsKey(str.charAt(i))) {
        int x = map.get(str.charAt(i));
        map.put(str.charAt(i), ++x);
      } else {
        map.put(str.charAt(i), 1);
      }
    }
    for(int i = 0; i < str.length(); i++) {
      if(map.get(str.charAt(i)) == 1) {
        return i;
      }
    }
    return -1;
  }
}


相关文章
|
Cloud Native 关系型数据库 Java
云原生数据仓库使用问题之如何安装PL/Java插件
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
算法 安全 数据库
使用 Discuz 快速搭建论坛|学习笔记
快速学习 使用 Discuz 快速搭建论坛
277 0
|
弹性计算 数据中心 异构计算
什么是ECS
什么是ECS
|
4天前
|
Android开发 开发者 Windows
这是我设计的一种不关机,然后改造操作系统的软件设计思路2.0版本
本文介绍了在不重启系统的情况下实现操作系统改造的两种方案。第一种方案通过SLFM Recovery模式,在独立于操作系统的最高权限环境下完成系统更新与改造,并支持断电恢复与失败回滚。第二种方案采用多分区机制,通过SLFM套件在独立分区中完成系统改造,适用于可中断与不可中断服务场景,确保系统更新过程的安全与稳定。
221 132
|
3天前
|
JSON fastjson Java
FastJson 完全学习指南(初学者从零入门)
摘要:本文是FastJson的入门学习指南,主要内容包括: JSON基础:介绍JSON格式特点、键值对规则、数组和对象格式,以及嵌套结构的访问方式。FastJson是阿里巴巴开源的高性能JSON解析库,具有速度快、功能全、使用简单等优势,并介绍如何引入依赖,如何替换Springboot默认的JackJson。 核心API: 序列化:将Java对象转换为JSON字符串,演示对象、List和Map的序列化方法; 反序列化:将JSON字符串转回Java对象,展示基本对象转换方法;

热门文章

最新文章