(数组与矩阵) 剑指 Offer 50. 第一个只出现一次的字符 ——【Leetcode每日一题】

news/2024/7/3 0:29:55

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

难度:简单

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

示例 1:

输入:s = “abaccdeff”
输出:‘b’

示例 2:

输入:s = “”
输出:’ ’

限制

  • 0 <= s 的长度 <= 50000

💡思路:

最直观的解法是使用 HashMap 对出现次数进行统计:字符做为 key,出现次数作为 value,遍历字符串每次都将 key 对应的 value 加 1。最后再遍历这个 HashMap 就可以找出出现次数为 1 的字符。

考虑到要统计的字符范围有限,也可以使用整型数组代替 HashMap。小写字母有 128 个字符,因此可以使用长度为 128 的整型数组来存储每个字符出现的次数。

🍁代码:(C++、Java)

C++

class Solution {
public:
    char firstUniqChar(string s) {
        vector<int> cnt(26);
        for(char c : s){
            cnt[c - 'a']++;
        }
        for(char c : s){
            if(cnt[c - 'a'] == 1) return c;
        }
        return ' ';
    }
};

Java

class Solution {
    public char firstUniqChar(String s) {
        int[] cnt = new int[26];
        for(char c : s.toCharArray()){
            cnt[c - 'a']++;
        }
        for(char c : s.toCharArray()){
            if(cnt[c - 'a'] == 1) return c;
        }
        return ' ';
    }
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为字符串 s 的长度。我们需要进行两次遍历。
  • 空间复杂度 O ( Σ ) O(Σ) O(Σ),其中 Σ 是字符集,在本题中 s 只包含小写字母,因此 ∣Σ∣≤ 26。我们需要 O ( Σ ) O(Σ) O(Σ) 的空间存储哈希映射。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!


http://lihuaxi.xjx100.cn/news/1356293.html

相关文章

【C++修炼之路】内存管理

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、C/C 内存分布二、考题三、C语言动态内存管理方式四、C内存管理方式1、对内置类型2、对自定义类型 五、C对动态管理的升级六…

数据结构C

数据结构 表 线性表 线性表是 具有相同数据类型的 n个数据元素 的有限序列&#xff08;有次序&#xff09;&#xff0c;其中n为表长&#xff0c;当n0时 线性表是一个空表。 若用L命名线性表&#xff0c;则其一般表示为 L {a1,a2,…,ai,ai1,…,an} 几个概念&#xff1a; …

如何使用Python三方库CCXT

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

数组前缀和

前缀和 前缀和就是指前缀的和&#xff0c;例如在数组中&#xff0c;从开始到 i 就是到 i 的前缀和。前缀和一般用来求中间连续某一段的和&#xff0c;例如sum[i] - sum[j - 1]就可以求出j 到 i 这一段的和。 在这一道题目里面&#xff0c;中间某一段连续子数组和为k&#xff0…

gitlab代码merge或push事件触发jenkins job

1. jenkins安装generic webhook trigger plugin并重启服务&#xff0c;这个插件允许通过webhook接收器触发jenkins任务 2. 在jenkins的job配置页面&#xff0c;选择构建触发器-generic webhook trigger,&#xff08;URL&#xff1a;http://JENKINS_URL/generic-webhook-trigge…

单例模式(java)

目录 概述 结构 代码实现 饿汉式&#xff08;静态变量&#xff09; 饿汉式&#xff08;静态代码块&#xff09; 懒汉式&#xff08;双重检查方式&#xff09; 概述 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式…

doris回归测试

doris提交pull request时一般要包含回归测试&#xff0c;回归测试的目录在doris/regression-test&#xff0c; 有文档较好的说明了回归测试过程: 回归测试 - Apache Doris 跑回归测试就是执行doris目录下的 ./run-regression-test.sh --run <回归测试名> 这个<回…

前端需要知道的三个不常用的函数式编程范式

1、柯里化函数 柯里化函数&#xff08;Currying&#xff09;定义&#xff1a;是把接受多个参数的函数变换成接受一个单一参数的函数**&#xff08;最初函数的第一个参数&#xff09;的函数&#xff0c;能夠返回接受余下的参数而且返回结果的新函数**的技术 作用&#xff1a;减…