首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

一个出现一次的字符

题目:在一个字符串中找到第一个出现一次的字符。如输入abaccdeff,则输出b。 看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。...当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是出现一次的字符。...第一次扫描字符串时,每扫描到一个字符就在哈希表的对应项中把次数加1 。接下来第二次扫描时,每扫描到一个字符就能从哈希表中得到该字符出现的次数。这样第一个出现一次的字符就是符合要求的输出。...这样我们就创建了一个大小为256,以字符ASCII码为键值的哈希表。 我们第一遍扫描这个数组时,每碰到一个字符,在哈希表中找到对应的项并把出现的次数增加一次。...,寻找唯一的一个出现一次的数。

69970

剑指offer 第一个出现一次的字符

题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个出现一次的字符,并返回它的位置 解题思路 我们遍历这个字符串,假设每个当前字符都是出现一次的,我们分别向前和向后考察是否存在相同字符...向前考察:保存一个vector里面存放所有已知的已经重复过的字符,如果当前字符跟这个vector里面的字符相同,那必然不是出现一次的 向后考察:遍历当前字符后面的字符,如果出现跟当前字符相同的...,立即停止,将当前字符加入vector中,接着work on下一个字符 向前和向后考察都通过了,立即return 该字符的位置,算法结束 代码 #include class Solution { public...int result; int length=str.size(); vector notunique; //对字符串的每一个进行考察...for(int i=0;i1;i++){ curr=str.at(i);//假设当前该字符是出现一次的字符 //如果该字符跟之前的字符重复

26330

剑指OFF|第一个出现一次的字符?

一、原题目描述: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。...二、解题思路 比较暴力点的解法 对于每一个字符,若其他位置也出现,则把字符串中所有这个字符全删掉,直到出现一个字符,后面没有再出现,则这个字符就是第一次出现的,返回其在原字符串的位置。...public int FirstNotRepeatingChar(String str) { 除此之外我还看到一个更优的解决方法,不得不惊叹算法功底的强大和逻辑的灵活。...考虑到只需要找到出现一次的字符,那么需要统计的次数只有0,1,更大,使用两个比特位就能存储这些信息。

31020
领券