剑指offer面试题35 第一个只出现一次的字符

考察点

知识点

题目

分析

这道题目求字符串中第一个只出现一次的字符,如果我们循环遍历字符串,依次和其余字符比较,这样的时间复杂度非常长。类似这种题目思维一定要想着如何能够拿空间换时间。如果我们能有一个哈希表,key对应字符串中每个字符信息,value对应它出现的次数,那么当统计出每个字符的次数以后,再遍历一遍就能拿到第一个只出现一次的字符了,俩次O(n)遍历就可以搞定。java字符用的是Unicode编码,每个字符占用2个字节,要想覆盖到全部字符,需要一个长度为65536的int类型的数组,就可以充当这个哈希表的角色

java 复制代码
public class ThirtyFive {
	public static void main(String[] args) {
		String str = "abaccdeff";
		getOne(str);
	}
	public static void getOne(String str) {
		int[] count = new int[65535];
		for (int i = 0;i<str.length();i++) {
			count[str.charAt(i)]++;
		}
		for (int i = 0;i<str.length();i++) {
			if(count[str.charAt(i)] == 1) {
				System.out.println(str.charAt(i));
				break;
			}
		}
	}
}
相关推荐
Bs_MoneyMagnet1 小时前
基于springboot+vue的滑雪场票务与装备租赁系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
不会就选b5 小时前
算法日常・每日刷题--<贪心>14
算法
AlienZHOU5 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
野生技术架构师6 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试
香吧香7 小时前
java服务异常日志只打印异常类型,没有堆栈定位分析
java·jvm·异常
qq_2518364578 小时前
AI 疾病自查功能SpringbootAI项目实战 · 技术实现文档
java·ai·ai编程
mmmmath_38 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode
Navigator_Z8 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
逆境不可逃8 小时前
Pi Agent 学习笔记:对话太长以后,如何压缩上下文
java