当前位置:网站首页>[Li Kou 387] the first unique character in the string
[Li Kou 387] the first unique character in the string
2022-07-06 10:37:00 【Spring breeze ~ eleven years】
Title Description : Given a string s , find Its first non repeating character , And return its index . If it doesn't exist , Then return to -1 .
Example 1:
Input : s = “leetcode”
Output : 0
Example 2:
Input : s = “loveleetcode”
Output : 2
Example 3:
Input : s = “aabb”
Output : -1
Tips :
- 1 <= s.length <= 105
- s Contains only lowercase letters
Solution 1 :
We can define one map aggregate ,key Character ,value Is the number of occurrences , Traversal string , Put each character in turn , First count the number of times each character appears , Then traverse the original string to find the first character that appears once , Just return the subscript .
class Solution {
public int firstUniqChar(String s) {
if(s == null) return -1;
HashMap<Character,Integer> map = new HashMap<>();
for(char ch : s.toCharArray()) {
if(map.get(ch) == null) {
map.put(ch,1);
}else{
int count = map.get(ch);
map.put(ch,count+1);
}
}
for(int i = 0;i < s.length();i++) {
if(map.get(s.charAt(i)) == 1) {
return i;
}
}
return -1;
}
}
Solution 2 :
The second time we traverse the above method is the string , We can also traverse the hash map the second time , You only need to traverse all the values in the hash map once , Find out which is not -1 The minimum value of , That is, the index of the first non repeating character . If all values in the hash map are -1, We'll go back to -1, That is, there is no unique character
class Solution {
public int firstUniqChar(String s) {
Map<Character, Integer> position = new HashMap<Character, Integer>();
int n = s.length();
for (int i = 0; i < n; ++i) {
// First traversal string
char ch = s.charAt(i);
if (position.containsKey(ch)) {
position.put(ch, -1);
} else {
// When the string first appears
position.put(ch, i);
}
}
int m = n;
for (Map.Entry<Character, Integer> entry : position.entrySet()) {
// Traverse the hash map for the second time
int pos = entry.getValue();
if (pos != -1 && pos < m) {
m = pos;
}
}
if (m == n) {
// There is no unique character
m = -1;
}
return m;
}
}
边栏推荐
- Time in TCP state_ The role of wait?
- [programmers' English growth path] English learning serial one (verb general tense)
- February 13, 2022 - Maximum subarray and
- How to build an interface automation testing framework?
- In fact, the implementation of current limiting is not complicated
- Use xtrabackup for MySQL database physical backup
- Sed text processing
- MySQL combat optimization expert 05 production experience: how to plan the database machine configuration in the real production environment?
- MySQL實戰優化高手04 借著更新語句在InnoDB存儲引擎中的執行流程,聊聊binlog是什麼?
- MySQL实战优化高手04 借着更新语句在InnoDB存储引擎中的执行流程,聊聊binlog是什么?
猜你喜欢
[reading notes] rewards efficient and privacy preserving federated deep learning
MySQL 29 other database tuning strategies
A necessary soft skill for Software Test Engineers: structured thinking
Mysql32 lock
The appearance is popular. Two JSON visualization tools are recommended for use with swagger. It's really fragrant
Opencv uses freetype to display Chinese
Mysql26 use of performance analysis tools
Just remember Balabala
C miscellaneous lecture continued
Complete web login process through filter
随机推荐
MySQL combat optimization expert 12 what does the memory data structure buffer pool look like?
Simple solution to phpjm encryption problem free phpjm decryption tool
MySQL21-用户与权限管理
Complete web login process through filter
[C language] deeply analyze the underlying principle of data storage
Good blog good material record link
高并发系统的限流方案研究,其实限流实现也不复杂
Mysql27 index optimization and query optimization
Discriminant model: a discriminant model creation framework log linear model
Anaconda3 installation CV2
在jupyter NoteBook使用Pytorch进行MNIST实现
[reading notes] rewards efficient and privacy preserving federated deep learning
解决在window中远程连接Linux下的MySQL
Transactions have four characteristics?
使用OVF Tool工具从Esxi 6.7中导出虚拟机
MySQL34-其他数据库日志
Moteur de stockage mysql23
C language string function summary
[paper reading notes] - cryptographic analysis of short RSA secret exponents
UEditor国际化配置,支持中英文切换