【字符串】C023_字符串中的第一个唯一字符(map | String 自带方法)

一、题目描述

Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.

二、题解
方法一:map

map 对字符进行计数。

* 优化: 可用 int[] 数组代替。

public int firstUniqChar(String S) {
char[] s = S.toCharArray();
Map map = new HashMap();

for (int i = 0; i < s.length; i++) {
map.put(s[i], map.getOrDefault(s[i], 0) + 1);
}
for (int i = 0; i < s.length; i++) {
if (map.get(s[i]) == 1)
return i;
}
return -1;
}

复杂度分析

时间复杂度:O(n)O(n)O(n),
空间复杂度:O(n)O(n)O(n),


方法二:String 的自带方法
public int firstUniqChar_3(String s) {
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (s.indexOf(ch) == s.lastIndexOf(ch))
return i;
}
return -1;
}

复杂度分析

时间复杂度:O(n)O(n)O(n),
空间复杂度:O(1)O(1)O(1),

作者:Kipp99

相关推荐

在这里插入图片描述

Python 字典的内置方法 setdefault()

在这里插入图片描述

Windows编程—控制面板程序显示信息修改(程序图标、名称、链接等)

AbstractAutoProxyCreator

Spring AOP 自动代理源码 DefaultAdvisorAutoProxyCreator

【亲测有效】IDEA连接MySQL数据库时“Server returns invalid timezone”时区问题的解决方法

【亲测有效】IDEA连接MySQL数据库时“Server returns invalid timezone”时区问题的解决方法