JZ54 字符流中第一个不重复的字符

Posted klaus08

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JZ54 字符流中第一个不重复的字符相关的知识,希望对你有一定的参考价值。

原题链接

描述

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

后台会用以下方式调用Insert 和 FirstAppearingOnce 函数。

string caseout = "";

1.读入测试用例字符串casein

2.如果对应语言有Init()函数的话,执行Init() 函数

3.循环遍历字符串里的每一个字符ch {

Insert(ch);

caseout += FirstAppearingOnce()

}

\\2. 输出caseout,进行比较。

返回值描述:

如果当前字符流没有存在出现一次的字符,返回#字符。


示例

输入:"google"
返回值:"ggg#ll"

思路

JZ34很像的。


解答

import java.util.Arrays;
import java.util.HashMap;

public class Solution {
    int[] a = new int[128];
    String tmp = "";

    //Insert one char from stringstream
    public void Insert(char ch) {
        a[ch]++;
        tmp += ch;
    }

    //return the first appearence once char in current stringstream
    public char FirstAppearingOnce() {
        for (int i = 0; i < tmp.length(); i++) {
            if (a[tmp.charAt(i)] == 1)
                return tmp.charAt(i);
        }
        return \'#\';
    }
}

本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15208439.html

以上是关于JZ54 字符流中第一个不重复的字符的主要内容,如果未能解决你的问题,请参考以下文章

54字符流中第一个不重复的字符

54.字符流中第一个不重复的字符(python)

54剑指offer--字符流中第一个不重复的字符

剑指Offer-54.字符流中第一个不重复的字符(C++/Java)

剑指offer 54.字符串字符流中第一个不重复的字符

字符流中第一个不重复的字符(python)