
【解题思路】
在alist中存放第一次出现的字符,在blist中存放出现大于一次的字符。最后返回alist中第一个字符即可。第一次使用HashMap存放出现一次的字符,调试发现在HashMap中,Key并不是按照存放先后顺序存储的,无法判断哪个是最先出现的。
class Solution {
public char firstUniqChar(String s) {
if(s.equals("")) return ' ';
ArrayList<Character> alist = new ArrayList<Character>();
ArrayList<Character> blist = new ArrayList<Character>();
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if(!alist.contains(c) && !blist.contains(c))
{
alist.add(c);
}
else if(alist.contains(c))
{
for(int j = 0; j < alist.size(); j++)
{
if(alist.get(j) == c)
{
alist.remove(j);
break;
}
}
blist.add(c);
}
}
char ans = ' ';
if(!alist.isEmpty())
{
ans = alist.get(0);
}
return ans;
}
}
该博客探讨了一个编程问题,即如何在给定的字符串中找到第一个只出现一次的字符。作者通过创建两个ArrayList,一个用于存储首次出现的字符,另一个用于存储重复出现的字符,然后遍历字符串来实现这一目标。然而,他们发现HashMap并不保证元素的插入顺序,这影响了找到第一个唯一字符的逻辑。博客内容主要涉及字符查找算法和数据结构的应用。
167

被折叠的 条评论
为什么被折叠?



