题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
方法一(能够通过牛客网检验的)
使用哈希表(作者本人只是照猫画虎,对于哈希表还需要深入学习)
let map = {};
function Init()
{
map = {};
}
function Insert(ch)
{
if(map[ch]){
map[ch] += 1;
}else{
map[ch] = 1;
}
}
function FirstAppearingOnce()
{
for(const i in map){
if(map[i] === 1){
return i;
}
}
return '#';
}
方法二
因为没有按照牛客网上面指定的输入输出方式而无法通过检验,但是思路还是可以的
function Init(len, ch) {
// write code here
let a = [];
for (let i = 0; i < len; i++) {
for (let j = 0; j < len; j++) {
if (ch[i] == ch[j] && i != j) { //有重复的便将将他的下标添加入数组中
a.push(i);
}
}
}
if (a.length == len) return '#';
else {
for (let i = 0; i < len; i++) {
if (i != a[i]) {
return ch[i] //找到第一个下没有重复的字符
}
}
}
}
//Insert one char from stringstream
function Insert(ch) {
// write code here
var arr = []
for (let i = 1; i <= ch.length; i++) {
arr.push(Init(i, ch));
}
return arr.toString();
}