-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathDay24.java
57 lines (46 loc) · 1.1 KB
/
Day24.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.offer;
/**
* 第一个只出现一次的字符
*
* 这题的主要思路是 建立一个hashmap 大小为256 因为char的长度为8,
* 然后第一次扫描,把字符作为key,出现的次数作为value。
* 第二次扫描,读取到第一个value=1的key 就是第一个只出现一次的字符。
* 时间复杂度为O(n)
* @author kexun
*
*/
public class Day24 {
public static void main(String[] args) {
Day24 d = new Day24();
d.firstChar("asd2fadsafds3ufaswwwereadg");
}
/**
* 一个简易的hashmap 因为char大小为8 所以数组大小为256
* @author kexun
*
*/
class HashMap{
int[] table = new int[256];
public void put(char key, int value) {
table[key] = value;
}
public int get(char key) {
return table[key];
}
}
public void firstChar(String str) {
HashMap map = new HashMap();
char[] array = str.toCharArray();
for (char c : array) {
int count = map.get(c);
map.put(c, ++count);
}
for (char c : array) {
int count = map.get(c);
if (count == 1) {
System.out.println(c);
break;
}
}
}
}