在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
定位【易】
- 给每个字符设置一个计数器
- 使用Set辅助
使用HashSet
import java.util.*;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if (str.length() == 0) return -1;
if (str.length() == 1) return 0;
int p = 0;
Set<Character> set = new HashSet<>(); // 非Single字符集合
char[] chars = str.toCharArray();
for (int i = 1; i < chars.length && p < chars.length; i++) {
// 如果字符出现第二次
if (chars[p] == chars[i]) {
set.add(chars[p]); // 标记
while (p < chars.length && set.contains(chars[p])) {
p++;
}
i = p;
}
}
if (p == chars.length) return -1;
else return p;
}
}
网友评论