题目链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
s = “abaccdeff”
返回 “b”
s = “”
返回 " "
解题过程
java的indexOf()
的用法:
了解上述用法后就好办了:
- 每遍历一个字符,就判断是否在之后的字符串中能否找到相同的字符,即
s.indexOf(ch, i + 1)
。 - 但是只有上述条件不够完整,因为如果出现
cc
这样的字符串时,当遍历到第二个c,结果还是会返回c,是不对的。所以还要判断当前字符之前没有出现过该字符。s.indexOf(ch) == i
的含义是:在字符串中寻找该字符串是否出现过。如果第一次出现位置是它自己则符合题意。
class Solution {
public char firstUniqChar(String s) {
for (int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if (s.indexOf(ch) == i && s.indexOf(ch, i + 1) == -1){
return ch;
}
}
return ' ';
}
}