第一次只出现一次的字符

【面试题】第一个只出现一次的字符(三种解法) 题目描述 解法一:哈希表计数法 需要从头开始扫描字符串两次。 第⼀次扫描字符串时, 每扫描到⼀个字符就在哈希表的对应项中把次数加1。 接下来第⼆次扫描时, 每扫描到⼀个字符就能从哈希表中得到该字符出现的次数。 当遇到第⼀个只出现⼀次的字符就是符合要求的结果。 java class Solution { public char firstUniqChar(String s) { HashMap<Character, Integer> map = new HashMap&l 阅读详情
题目

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

总结

方法一:基于LinkedHashMap的方法

由于题目与字符出现的次数有关,所以可以想到用一个容器统计每个字符出现的次数。于是想到用HashMap。但是HashMap是不存储数据的顺序的。所以要想返回第一次出现一次的顺序,用LinkedHashMap。

第一次扫描时,在哈希表中更新所有字符的时间复杂度是O(n)。第二次扫描时,在哈希表中找到所有字符出现的次数的时间复杂度也是O(n)。

class Solution {
    public int FirstNotRepeatingChar(String str) {

        Map<Character, Integer> map = new LinkedHashMap<Character, Integer>() {};

        // 首先遍历字符串,加入到map中
        for (int i = 0; i < str.length(); i++) {
            Character charAt = str.charAt(i);
            if (!map.containsKey(charAt)) {
                map.put(charAt, 1);
            } else {
                int count = map.get(charAt);
                count++;
                map.put(charAt, count);
            }
        }

        int flag = -1;
        for(int i = 0; i<str.length(); i++){
            char c = str.charAt(i);
            if (map.get(c) == 1) {
                return i;
            }
        }
        return flag;
    }
}
找出字符串中第一次只出现一次的字母 String.prototype.firstAppear = function () { var obj = {}, len = this.length; for (var i = 0; i < len; i++) { if (obj[this[i]]) { obj[this[i]]++; } else { obj[this[i]] = 1; } } for. 阅读详情

相关推荐

深入解析i2cdetect:从基础命令到高级读写操作

本文深入解析Linux下i2cdetect工具,从基础安装、总线扫描到高级读写操作。作为i2c-tools的核心组件,i2cdetect是硬件调试的得力侦探,能快速识别I2C总线上的设备地址。文章还涵盖了i2cdump、i2cset、i2cget等进阶工具,并介绍了如何在C程序中调用读写接口进行嵌入式开发,是掌握I2C通信调试的实用指南。

weixin_29189987的博客 371

面试题50-第一个只出现一次的字符

题目一 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。 解题思路 建立一个哈希表,第一次扫描的时候,统计每个字符的出现次数。第二次扫描的时候,如果该字符出现的次数为1,则返回这个字符的位置。 C++实现 class Solution { public: char FirstNotRepeatingChar(char*pString) { if(pString==nullptr) return '\0'; const

weixin_42127177的博客 1118

CNC雕刻与VCarve Pro实战:将三维地形数据转化为木质景观时钟

计算机辅助制造(CAM)是现代数字制造的核心技术之一,它通过软件将设计模型转化为机床可执行的指令,驱动设备进行精准加工。其原理在于将三维模型离散为刀具运动路径(G代码),控制铣刀等执行机构进行“减材”成型。这项技术的价值在于实现了复杂三维形体的高精度、可重复制造,极大地拓展了创意实现的边界。在应用场景上,CAM广泛应用于模具加工、原型制作、个性化工艺品制造等领域。本文聚焦于一个具体实践:利用VCarve Pro软件,结合从在线地图服务获取的真实地形STL数据,通过CNC雕刻机在硬木上加工出具有真实地理特征的

weixin_30651345的博客 376

Leetcode——第一个只出现一次的字符(字典数组)

1.题目 2. 题解 (1)HashMap class Solution { public char firstUniqChar(String s) { if(s == null) return ' '; //存放字符,字符是否已存在 HashMap<Character, Boolean> map = new HashMap<>(); for(int i = 0; i

Yawn 129

芯片研发完整全流程

芯片研发全流程可分为需求与架构设计、前端逻辑设计、后端物理设计、晶圆制造、封装测试五大阶段,涉及16个核心步骤。研发过程需要多学科交叉协作,包括微电子、物理、材料、计算机等。关键注意事项包括验证优先、工艺约束遵循、可测性设计等。芯片设计需要绘制纳米级精度的物理版图,而非传统工程图纸,需使用专业EDA工具而非KiCad这类PCB设计软件。完整研发流程具有高投入、高风险特点,需严格遵循行业标准和规范。

weixin_44520581的博客 228

Agent Harness Engineering: AI Agent 执行管控与安全沙箱 原理与最佳实践

我们正站在计算范式转移的历史节点上。2024-2026 年间,AI 系统从被动的内容生成器(Generative AI)演变为主动的行动执行者(Agentic AI)。这一转变的根本特征是:根据 2026 年初的行业数据:然而,能力的提升伴随着风险的指数级增长。2024-2026 年间发生的多起标志性安全事件揭示了 Agent 系统的脆弱性:案例 1:Slack AI 数据外泄事件(2024 年 8 月)案例 2:制造业供应链攻击(2026 年 Q3)案例 3:Arup 深度诈骗案(2026 年 9 月)这

AI天才研究院 1668

C语言——第一个只出现一次的字符

一、问题描述(来源:计蒜客) 二、思路一 从字符串的第二个字母开始循环,如果后续有相同的字母,则将后面相同的字母删除,该删除字母后面的字母全部往前移一位。一轮循环完后,再将开头的字母删除(如果该字母有重复)。如果后面没有找到与这个字母相同的字母,就结束循环,打印字符串的第一个字母;如果检测到这个字符串是空的,则打印no。 注:这种方法比较复杂,代码运行耗时较长,而且有几个地方不注意容易出...

仰望星空 4215

软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程)

多语言版本解决方案是应对全球化趋势的关键策略,它通过构建灵活且可扩展的架构,支持软件产品在不同语言和文化环境下的顺畅运行与展示。此方案涵盖了前端多语言界面实现、后端多语言数据处理及大数据环境下的多语言支持等多个层面,确保公司能够高效地推出适应全球用户多样化需求的软件产品。在前端多语言界面实现方面,解决方案采用了国际化与本地化的结合方法。国际化过程确保软件的功能和代码设计能够处理多种语言和文化习惯,而本地化则针对特定地区进行界面和内容的调整。

大模型大数据攻城狮的专栏 2752

剑指offer-第一次只出现一次的字符

28.第一次只出现一次的字符 题目内容: 代码及思路: 又涉及到计数的问题,因此想到的还是利用哈希表进行判断。 #include<iostream> #include<string> #include<unordered_map> using namespace std; class Solution { public: int FirstNot...

larklili的博客 128

【OpenClaw从入门到精通】第15篇:国产芯片适配实战——昇腾/龙芯/天数智芯全流程跑通(2026实测版)

2026年国产芯片AI适配迎来爆发期,OpenClaw作为轻量化本地AI智能体,已实现华为昇腾、龙芯、天数智芯等主流国产平台的全流程适配。本文基于实测数据,从背景解析、核心原理、算法优化、实操部署四个维度,详细讲解OpenClaw在香橙派昇腾开发板、龙芯3B6000M、天数彤央TY1200及联想开天X7h的部署流程,同时提供统一工具玄武CLI的使用指南。文中包含完整代码、执行结果、避坑技巧及虚拟实战案例,兼顾新手入门与进阶提升,帮助读者快速掌握国产芯片上的本地AI部署能力,实现数据隐私保护与低成本AI落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1005

Sigrity SPEED2000 General SI Simulation模式如何进行信号仿真分析操作指导-DDR

本例是几个简单的板载DDR颗粒的结构,本例中使用General SI Simulation模式仿真DDR信号,结构拓扑如下,Addcmd,clk,cke都是T拓扑。Sigrity SPEED2000 General SI Simulation模式可以对信号进行仿真分析,仿真将电源视为理想电源,以下图为例进行说明。DQS的接收端模型设置为DQS_34_ODT60_1333。模式如何进行信号仿真分析操作指导-DDR。附带驱动和接收端的IBIS模型。

weixin_54787054的博客 511

java正则替换第一次出现的字符

通过使用方法或正则表达式的替换功能,我们可以在Java中实现对字符串中第一次出现的字符的替换操作。这些方法提供了灵活而方便的方式来处理字符串替换需求。在实际应用中,根据具体的需求和场景,选择合适的方法来实现字符串替换操作。

牛肉胡辣汤 1828

手把手教你学Simulink--基于车联网与智能交通系统的场景实例:基于车联网(V2X)的实时路况信息共享与处理

《基于Simulink的车联网(V2X)实时路况共享系统仿真》摘要:本文详细介绍使用Simulink构建V2X智能交通系统的完整方法。系统包含交通路网建模、V2X通信实现(支持DSRC/C-V2X标准)、多源路况信息融合、动态路径规划等核心模块。通过对比实验,验证V2X可使平均车速提升52%,行程时间缩短34%,显著提升交通效率。文章还探讨了AI预测调度、车辆编队等高级应用,为智慧交通系统开发提供实用参考。所需工具包括Simulink、SimEvents及无线通信工具箱等。

MHD0815的博客 737

求在一个字符串中第一次出现一次的字符

比如在字符串“aabccdeff”中第一次出现一次的字符是‘b’ 此题是Google面试题,要在短时间内想到时间复杂度是N的解法不简单,本人提供一种相对犀利的解法: #include #include char first(char *str) { int a[255]; char *p = str; memset(a,0,255*sizeof(int)); while(*p

Jacob 1003

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

php 第一次出现_php 只替换第一次出现的字符串

在php中要替换串中指定字符我们一般会一次全部替换,如str_replace函数,但有时只想替换第一次出现的,像文章的关键词替换了,这个如果有100个不可能出现100次啊,我只想限制几次了,下面我来给各位介绍实现方法。例$str='这是字符串我只替换ABC一次后面的ABC我不替换了,有没有办法实现。';把第一个abc替换成xyz,由于要替换的字符串是固定的,很多人想到了用str_replace()...

weixin_42133969的博客 408

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Linux sed 替换第一次出现的字符串

2016-12-16 深圳 南山平山村 曾剑锋。* Linux sed 替换第一次出现的字符串。* 需要替换配置文件中第一次出现的文本内容。

大叶子不小的博客 1307

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

34、第一次只出现一次的字符

题目:在一个字符串(1&lt;=字符串长度&lt;=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 思路:用map保持信息 public int FirstNotRepeatingChar(String str) { if(str == null || str.length()&lt;=0) return -1; HashMap&lt;...

a_b_c104的博客 164

给了一串字符串,求每个字符第一次出现的位置

文章目录给了一串字符串,求每个字符第一次出现的位置 给了一串字符串,求每个字符第一次出现的位置 这个不是蠡口题目 是我曾经一次ms人家问我的 给了一串字符串,求每个字符第一次出现的位置 #include <stdio.h> int main() { char* str = (char *)"jfkjdsfjkdsf"; int hash[26] ;//初始化为-1 for (int i = 0; i < 26; i++) { hash[i] = -1; } char

fgh123的博客 464

【PHP函数】strstr() 函数搜索一个字符串在另一个字符串中的第一次出现的位置

关键词:搜索/查找/查询/获取/读取/返回/字符串第一次出现的位置 参考来源:http://www.w3cschool.cn/func_string_strstr.html 函数搜索一个字符串在另一个字符串中的第一次出现  该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。 语法 strstr(string,search) 参数 描述

夕雨林流金,web全栈,web全端,网站技术博客 1251

java删除字符串中第一次出现指定的字符

String 类 方法replaceFirst() 查找第一次出现的指定字符 解决方法: 下面代码只删除str中第一次出现的ddd字符串 String str="dddkkkddd"; String d=str.replaceFirst("ddd", ""); System.out.println(d);

学英语的程序员 2882

算法题:统计第一次出现的字符

(1)方法1 使用HashSet public void test1() { Map<Character, Integer> map=new HashMap<Character, Integer>(); String str ="asgasdgdshhffmddjjnan"; Character c =null; for (int i = 0; i <...

rj2017211811的博客 193

SQL 删除替换字符串中第一次出现的指定字符

在SQL Server中删除字符串中第一次出现的字符,使用到charindex函数获取字符第一次出现的位置索引,再使用STUFF函数替换掉指定位置的字符,如下所示: --目的:删除替换字符串中第一次出现的指定字符,eg:CMCS-004-1-->CMCS004-1 --1.查找指定字符在字符串中第一次出现的位置索引,使用函数charindex(指定字符,查找字符串),结果:5 select charindex('-','CMCS-004-1') --2.删除指定位置字符,结果:CMCS004-1

CONSOLE11的博客 2862

sql怎么取某个字符串最后一次出现的位置后面的字符串&&sql 取得某字符串第一次出现的位置前面的字符串

declare @s varchar(100); set @s = 'ab-cd-ef-gh';   select substring(@s,len(@s)-charindex('-',reverse(@s))+2,8000) 关联网址

TianGaojie123abc的专栏 7877

java 求解字符串中第一次出现的字符的位置

题目: 在字符串中找出第一个只出现一次的字符的位置,如输入“abaccdeff”,则输出“2”。1 解法:以空间换时间,借助Hashmap实现 import java.util.HashMap; import java.util.Map; import java.util.Set; public class Solution { public int FirstNotRepea

hou_yaxin的博客 5990
上一篇: 数组中的第K个最大元素
下一篇: 连续子数组的最大和
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值