美文网首页
50-第一个只出现一次的字符

50-第一个只出现一次的字符

作者: 一方乌鸦 | 来源:发表于2020-05-07 09:37 被阅读0次

1. 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。

示例:
s = "abaccdeff"
返回 "b"
s = ""
返回 " "
除了使用哈希表,还可以使用 char[256]来存储结果; char 值范围为 -128~127

class Solution {
    public char firstUniqChar(String s) {
        char[] c = s.toCharArray();
        int len = c.length;
        char[] result = new char[127];
        for(int i = 0;i < len;i++){
            result[c[i]]++;
        }
        for(int i = 0;i < len;i++){
            if(result[c[i]] == 1)
                return c[i];
        }
        return  ' ';
    }
}

2. 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

这里使用 List 来按顺序存字符,用来取出第一个。需要记住 List 移除元素的 api。一个是按照索引remove,一个是通过元素 equals 方法来移除。

    E remove(int index);
    boolean remove(Object o);
public class Solution {
    char[] c = new char[256];
    ArrayList<Character> q = new ArrayList<>();
    public void Insert(char ch) {
        if (c[ch] == 0) {
            q.add(ch);
        } else if (c[ch] == 1) {
            q.remove(new Character(ch));
        }
        c[ch] += 1;
    }

    public char FirstAppearingOnce() {
        if (q.size() == 0) return '#';
        return q.get(0);
    }
}

相关文章

网友评论

      本文标题:50-第一个只出现一次的字符

      本文链接:https://www.haomeiwen.com/subject/qemqghtx.html