Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • 数组

  • 链表

  • 字符串

    • 3.无重复字符的最长字串
    • 2451. 差值数组不同的字符串
    • 301. 删除无效的括号
    • 49. 字母异位词分组
    • 459. 重复的子字符串
    • 844. 比较含退格的字符串
    • 828. 统计子串中的唯一字符
    • 剑指offer05
    • 剑指offer38
    • 剑指 Offer 50. 第一个只出现一次的字符
      • 1.List
      • 2.LinkedHashMap
    • 双指针法

  • 二叉树

  • 动态规划

  • 深搜回溯

  • 数学贪心

  • 堆栈队列

  • 前缀和

  • 算法设计

  • 位运算

  • WA

  • 算法
  • 字符串
phan
2023-06-22
目录

剑指 Offer 50. 第一个只出现一次的字符

# 剑指 Offer 50. 第一个只出现一次的字符 (opens new window)

# 1.List

分析:用List集合保证插入字符的顺序性。适用String#contains方法判断重复字符。

class Solution {
    public char firstUniqChar(String s) {
        if(s.length()==0) return ' ';
        List<Character> list=new ArrayList<>();
        list.add(s.charAt(0));
        for(int i=1;i<s.length();i++){
            char c=s.charAt(i);
            if(s.substring(0,i).contains(s.substring(i,i+1))){
                if(list.contains(c))
                list.remove(Character.valueOf(c));
            }
            else{
                list.add(c);
            }
        }
        if(list.size()==0) return ' ';
        return list.get(0);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 2.LinkedHashMap

分析:LinkedHashMap保证访问顺序与插入顺序保持一致。

class Solution {
    public char firstUniqChar(String s) {
        Map<Character,Integer> map=new LinkedHashMap<>();
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            if(map.containsKey(c)){
                map.remove(c);
                map.put(c,2);
            }
            else{
                map.put(c,1);
            }
        }
        for(Character c:map.keySet()){
           if(map.get(c)==1) return c;
        }
        return ' ';
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
编辑 (opens new window)
#Leetcode#字符串
上次更新: 2023/12/15, 15:49:57
剑指offer38
76.最小覆盖子串

← 剑指offer38 76.最小覆盖子串→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式