LeetCode 387. First Unique Character in a String (字符串中的第一个唯一字符)
2024-08-23 14:52:21
题目标签:String, HashMap
题目给了我们一个 string,让我们找出 第一个 唯一的 char。
设立一个 hashmap,把 char 当作 key,char 的index 当作value。
遍历string,如果这个 char 没有在 map 里,说明第一次出现,存入 char,index;
如果这个 char 已经在 map 里,说明不是第一次出现,而且我们不在乎这种情况,更新 char, -1。
遍历hashmap,把最小的 index 的值找出来,返回即可。
Java Solution:
Runtime beats 41..82%
完成日期:08/19/2018
关键词:HashMap
关键点:把index 存入map
class Solution
{
public int firstUniqChar(String s)
{
HashMap<Character, Integer> map = new HashMap<>();
char[] arr = s.toCharArray(); for(int i=0; i<arr.length; i++)
{
char c = arr[i];
Integer v = map.get(c); if(v != null) // if a char goes here, means that it is not a unique one
map.put(c, -1);
else // unique char only goes here once
map.put(c, i);
} int minIndex = Integer.MAX_VALUE;
// find a min index char by iterating hashMap
for(Character key : map.keySet())
{
Integer v = map.get(key); if(v >= 0 )
minIndex = Math.min(minIndex, v); } return minIndex == Integer.MAX_VALUE ? -1 : minIndex;
}
}
参考资料:https://leetcode.com/problems/first-unique-character-in-a-string/discuss/161004/Java-one-pass-O(1)-space-solution
LeetCode 题目列表 - LeetCode Questions List
题目来源:https://leetcode.com/
最新文章
- Hibernate全套增删改查+分页
- Yii2 认证实现原理和示例
- *HDU2852 树状数组(求第K小的数)
- 可爱的Python_课后习题_CDay−2 完成核心功能
- @RestController注解下返回到jsp视图页面
- Only one statement is allowed per batch. A batch separator, such as &#39;GO&#39;, might be required between statements.
- 12.NFS搭建配置
- Java魔法堂:注解用法详解——@SuppressWarnings
- nyoj 10 skiing(记忆化搜索)
- MVC5中使用KinEditor
- UVA_11796_Dog_Distance_(计算几何)
- Objective-c知识小结
- VLOOKUP函数常用套路大全
- redis缓存数据库
- Python之操作MySQL数据库
- Day18--Python--面向对象--类与类之间的关系
- tomcat安装与项目部署
- Wireshark 过滤器语法
- React native中的组建通知通信:
- java web项目使用IDEA打成war包
热门文章
- <;mybatis:scan>;与<;MapperScannerConfigurer/>;
- mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全
- STM32的串口DMA收发以及双缓冲区的实现
- Redis 它是什么?它用来做什么?它的优势与短板如何?
- 崩溃通常是指操作系统向正在运行的程序发送的信号-EXC_BAD_ACCESS是信号
- 虚拟机找不到本机vmnet0,vmnet8,无法连接xshell,解决方案
- saturne installation on Ubuntu
- js获取昨天,最近7天,最近30天通用方法
- 原生js实现三个按钮绑定三个计时器,点击其中一个按钮,开启当前计时器,另外另个不开启
- 洛谷 3870 [TJOI2009]开关