剑指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;
			}
		}
	}
}
相关推荐
澳鹏Appen11 分钟前
澳鹏重磅发布ExamOCRBench:面向端到端试卷判分的多任务基准
算法·benchmark·基准评测
jason成都19 分钟前
RTKLIB 的 Java 移植版来了:rtklib-java v3.3.0 功能全景
java·gnss·rtklib·rtklib_java
LazyHunter923 分钟前
JDK 28:Java 下一步方向解析与新特性展望
java·jdk
benjormin25 分钟前
Java数据结构 二叉搜索树
数据结构·算法
m0_6399069427 分钟前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
人工智能培训29 分钟前
知识图谱:结构化表达实体与关系的知识组织技术
大数据·人工智能·算法·重构·生活·知识图谱
zhippt_101435 分钟前
图转PPT怎么把截图变成可编辑幻灯片?技术路线与实测拆解
面试
GIS数据转换器41 分钟前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
地平线开发者1 小时前
QAT 实战:从 PyTorch 模型到 J6E 实板精度与延时验证
pytorch·算法·自动驾驶
IT星宿1 小时前
github-gravity:用 Rapier2D 把 GitHub 贡献图做成 SVG 物理动画
算法·github