题目标签: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/

最新文章

  1. Hibernate全套增删改查+分页
  2. Yii2 认证实现原理和示例
  3. *HDU2852 树状数组(求第K小的数)
  4. 可爱的Python_课后习题_CDay−2 完成核心功能
  5. @RestController注解下返回到jsp视图页面
  6. Only one statement is allowed per batch. A batch separator, such as &#39;GO&#39;, might be required between statements.
  7. 12.NFS搭建配置
  8. Java魔法堂:注解用法详解——@SuppressWarnings
  9. nyoj 10 skiing(记忆化搜索)
  10. MVC5中使用KinEditor
  11. UVA_11796_Dog_Distance_(计算几何)
  12. Objective-c知识小结
  13. VLOOKUP函数常用套路大全
  14. redis缓存数据库
  15. Python之操作MySQL数据库
  16. Day18--Python--面向对象--类与类之间的关系
  17. tomcat安装与项目部署
  18. Wireshark 过滤器语法
  19. React native中的组建通知通信:
  20. java web项目使用IDEA打成war包

热门文章

  1. &lt;mybatis:scan&gt;与&lt;MapperScannerConfigurer/&gt;
  2. mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全
  3. STM32的串口DMA收发以及双缓冲区的实现
  4. Redis 它是什么?它用来做什么?它的优势与短板如何?
  5. 崩溃通常是指操作系统向正在运行的程序发送的信号-EXC_BAD_ACCESS是信号
  6. 虚拟机找不到本机vmnet0,vmnet8,无法连接xshell,解决方案
  7. saturne installation on Ubuntu
  8. js获取昨天,最近7天,最近30天通用方法
  9. 原生js实现三个按钮绑定三个计时器,点击其中一个按钮,开启当前计时器,另外另个不开启
  10. 洛谷 3870 [TJOI2009]开关