看到很多讨论代码中FirstAppearingOnce()方法中都是这样写的:
for(char ch : str) | for(int i=0;i<size;++i)
真的是... emmm...
【澄清】offer书上代码中occurrence[i]数组有两个作用,很是巧妙:
- 记录字符出现的次数;
- 记录字符出现的次数。
特此,我分别用两个数组来表示,如下:
public class Solution { int[] count = new int[256]; // 字符出现的次数 int[] index = new int[256]; // 字符出现的次数 int number = 0; public void Insert(char ch) { count[ch]++; index[ch] = number++; } public char FirstAppearingOnce() { int minIndex = number; char ch = '#'; for (int i = 0; i < 256; i++) { // !!! if (count[i] == 1 && index[i] < minIndex) { ch = (char) i; minIndex = index[i]; } } return ch; } }