当前位置:网站首页>[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;
}
}
边栏推荐
- Windchill配置远程Oracle数据库连接
- MySQL23-存储引擎
- 该不会还有人不懂用C语言写扫雷游戏吧
- Global and Chinese market of thermal mixers 2022-2028: Research Report on technology, participants, trends, market size and share
- Mysql26 use of performance analysis tools
- 数据库中间件_Mycat总结
- MySQL storage engine
- MySQL实战优化高手05 生产经验:真实生产环境下的数据库机器配置如何规划?
- Use JUnit unit test & transaction usage
- PyTorch RNN 实战案例_MNIST手写字体识别
猜你喜欢
MySQL36-数据库备份与恢复
MySQL30-事务基础知识
Const decorated member function problem
MySQL34-其他数据库日志
[unity] simulate jelly effect (with collision) -- tutorial on using jellysprites plug-in
MySQL33-多版本并发控制
A necessary soft skill for Software Test Engineers: structured thinking
A necessary soft skill for Software Test Engineers: structured thinking
MySQL底层的逻辑架构
Opencv uses freetype to display Chinese
随机推荐
What should the redis cluster solution do? What are the plans?
Advantages and disadvantages of evaluation methods
Security design verification of API interface: ticket, signature, timestamp
Pytorch RNN actual combat case_ MNIST handwriting font recognition
在jupyter NoteBook使用Pytorch进行MNIST实现
如何搭建接口自动化测试框架?
Simple solution to phpjm encryption problem free phpjm decryption tool
Mysql30 transaction Basics
Sed text processing
Use xtrabackup for MySQL database physical backup
该不会还有人不懂用C语言写扫雷游戏吧
MySQL 29 other database tuning strategies
Global and Chinese markets of static transfer switches (STS) 2022-2028: Research Report on technology, participants, trends, market size and share
15 medical registration system_ [appointment registration]
Isn't there anyone who doesn't know how to write mine sweeping games in C language
MySQL22-逻辑架构
MySQL combat optimization expert 02 in order to execute SQL statements, do you know what kind of architectural design MySQL uses?
[reading notes] rewards efficient and privacy preserving federated deep learning
[untitled]
13 medical registration system_ [wechat login]