美文网首页
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