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 ‘#‘;
    }
}

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

上一篇:【STM32F429的DSP教程】第46章 STM32F429的IIR带通滤波器实现(支持逐个数据的实时滤波)


下一篇:查看git分支图