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 字符流中第一个不重复的字符的主要内容,如果未能解决你的问题,请参考以下文章