当前位置: 首页 > news >正文

剑指offer-34、第⼀次出现的字符

题目描述

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

示例1
输⼊:"google"
返回:4

思路及解答

暴力遍历(不推荐)

通过双重循环检查每个字符是否只出现一次。

public class Solution {public int FirstNotRepeatingChar(String str) {if (str == null || str.length() == 0) return -1;for (int i = 0; i < str.length(); i++) {char currentChar = str.charAt(i);boolean isUnique = true;// 检查当前字符是否在后续或前面重复出现for (int j = 0; j < str.length(); j++) {if (i != j && currentChar == str.charAt(j)) {isUnique = false;break; // 发现重复,立即跳出内层循环}}if (isUnique) {return i; // 返回第一个唯一字符的位置}}return -1; // 没有找到唯一字符}
}
  • 时间复杂度​:O(n²),其中n是字符串长度。对于每个字符,都需要遍历整个字符串检查是否重复
  • 空间复杂度​:O(1),只使用了常数级别的额外空间

哈希表统计次数

使用HashMap来统计每个字符的出现次数,然后按顺序查找第一个出现次数为1的字符

import java.util.HashMap;public class Solution {public int FirstNotRepeatingChar(String str) {if (str == null || str.length() == 0) return -1;// 使用HashMap统计每个字符的出现次数HashMap<Character, Integer> charCount = new HashMap<>();// 第一次遍历:统计字符出现次数for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);charCount.put(c, charCount.getOrDefault(c, 0) + 1);}// 第二次遍历:按原顺序查找第一个出现次数为1的字符for (int i = 0; i < str.length(); i++) {if (charCount.get(str.charAt(i)) == 1) {return i;}}return -1;}
}
  • 时间复杂度​:O(n),需要两次线性遍历
  • 空间复杂度​:O(n)

使⽤字符数组来统计

由于全都是字符,’ A ‘-’ z ‘⼀共 58 个字符(中间有其他字符),针对已知字符范围的情况,可以用数组代替HashMap,提高效率

public class Solution {public int FirstNotRepeatingChar(String str) {if (str == null || str.length() == 0) return -1;// 由于要区分大小写,且包含所有字母,使用128覆盖基本ASCII字符int[] charCount = new int[128];// 第一次遍历:统计字符出现次数for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);charCount[c]++;}// 第二次遍历:查找第一个唯一字符for (int i = 0; i < str.length(); i++) {if (charCount[str.charAt(i)] == 1) {return i;}}return -1;}
}
  • 时间复杂度​:O(n)
  • 空间复杂度​:O(1),数组大小固定为128
http://www.hskmm.com/?act=detail&tid=30671

相关文章:

  • 斜率优化DP
  • 2025 年海运服务最新推荐排行榜:聚焦优质运输网络的澳洲悉尼墨尔本家具及大型物品海运公司盘点
  • LGP7963 [NOIP 2021] 棋局 学习笔记
  • 310、清平调三首其三
  • 2025 年国内地坪源头厂商最新推荐排行榜:聚焦优质企业服务与性能,助力客户精准选型固化剂/水性聚氨酯砂浆/环氧/聚氨酯超耐磨地坪工程厂商推荐
  • 2025 最新国际搬家公司推荐榜:海运 / 移民 / 家具运输实测解析,靠谱服务商甄选指南
  • 2025 年数据恢复系统公司推荐转转大师数据恢复,深度剖析各款系统平台核心优势与适用场景数据恢复系统推荐指南
  • 2025 年最新推荐防静电地板源头厂家权威排行榜,涵盖机房陶瓷全钢等多类型产品优质品牌汇总车间/生产防静电地板/防静电活动地板/抗静电地板公司推荐
  • 秋假集训记
  • golang优化
  • AI智能体开发!和Kiro、Kimi、PPIO、TEN、memU、MiniMax一起Vibe丨Convo AIRTE2025
  • 实用指南:Transformer模型:深度解析自然语言处理的革命性架构
  • 第一章
  • 生成式AI基础设施面临网络攻击威胁:企业安全新挑战
  • 数据结构笔记
  • 实用指南:SQL Server从入门到项目实践(超值版)读书笔记 27
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 H3C 新华三 定制版
  • LGP8866 [NOIP 2022] 喵了个喵 学习笔记
  • edge每次打开不是用自己的账户,还要选择一次
  • LibreOffice Impress播放不出视频的解决方法
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Inspur 浪潮 定制版
  • Exchange 异常关机后无法登录owa/ecp 以及ems无法连接远程服务器
  • 【GitHub每日速递 251014】Claude Code:用自然语言命令让编码快到飞起!
  • 新项目完结,Ai Agent 智能体、拖拉拽编排!
  • 硅谷大佬揭秘创业者成功法则
  • 2025年南通宠物医院最新权威推荐榜:专业诊疗与暖心服务口碑之选
  • 2025年10月学校家具定制厂家最新推荐排行榜,课桌椅,宿舍床,图书馆家具,教室家具公司推荐!
  • 2025年10月螺杆泵厂家最新推荐排行榜,单螺杆泵,双螺杆泵,三螺杆泵,高效耐用品质之选!
  • 2025年恒温恒湿系统厂家最新推荐榜单,精加工车间/厂房/美术馆/仓库/计算机房/档案室/工业/工厂车间恒温恒湿系统公司推荐
  • 2025年会议系统厂家最新推荐排行榜,专业音视频会议系统,智能会议解决方案,高清视频会议系统公司推荐!