ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
<div id="div34"><h4> 34, 第一个只出现一次的字符 <h4></div> >在字符串中找出第一个只出现一次的字符的索引。如输入"abaccdeff",则输出1,如果没有这样的字符存在,则返回-1,要求时间复杂度为O(n) 1. 新建一个对象,其中key用来存放字符,value用来存放该字符出现的次数; 2. 第一次循环,将所有字符和对应出现的次数存放在map中,时间复杂度为0(n); 3. 第二次循环找到value为1的字符所在的位置,并返回。 ```javascript function FirstNotRepeatingChar(str) { if (str.length < 1 || str.length > 10000) return -1; const map = {}; for (let i = 0; i < str.length; i++) { if (!map[str[i]]) { map[str[i]] = 1; } else { map[str[i]]++; } } for (let i = 0; i < str.length; i++) { if (map[str[i]] === 1) { return i; } } return -1; } ``` [54--字符流中第一个不重复的字符](https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720?tpId=13&&tqId=11207&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking) 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 后台会用以下方式调用Insert 和FirstAppearingOnce 函数 >string caseout = ""; 1.读入测试用例字符串casein 2.如果对应语言有Init()函数的话,执行Init() 函数 3.循环遍历字符串里的每一个字符ch { Insert(ch); caseout += FirstAppearingOnce() } 2\. 输出caseout,进行比较。 ~~~ 输入: "google" 返回值: "ggg#ll" ~~~