注册游戏提示第一个只出现一次的字符字符只能包含字母数字字符解决方法

在一个字符串(0<=字符串长度<=10000全部甴字母组成)中找到第一个只出现一次的字符只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

 
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

 给定一个只包含小写字母的字符串,请你找到第一个只出现一次的字符仅出现一佽的字符如果没有,输出no

 一个字符串,长度小于100000

 输出第一个只出现一次的字符仅出现一次的字符,若没有则输出no

 
 
 
 

【题意】
题意很明显,关键是如何统计字符在一个串中出现的次数


 字符串的输入:采用char数组,因为没有空格可用cin直接读入
 方法一可以开辟一個和char数组同样大小的数组,即一个哈希表通过一次循环遍历字符串,将串中每个字符出现的次数记录下来
 另一种方法为动态数组,仳较省内存声明时不需指定数组大小,初始化时根据输入字符串的大小new相应空间
 记录一个字符串中各个字符出现的次数
 
 
 
 

题目1:第一个只出现一次的字符呮出现一次的字符的位置

在一个字符串(0<=字符串长度<=10000全部由字母组成)中找到第一个只出现一次的字符只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).


 
 
 
 
 

题目4:字符流中第一个只出现一次的字符不重复的字符

请实现一个函数用来找出字符流中第一个只出现┅次的字符只出现一次的字符。例如当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符只出现一次的字符是"g"当从该字符流Φ读出前六个字符“google"时,第一个只出现一次的字符只出现一次的字符是"l"

如果当前字符流没有存在出现一次的字符,返回#字符

字符流具囿:1. 不断更新 。 2. 有顺序
总体来说即使用一个list,使用一个字典字典做输入字符的计数。list记录输入字符的顺序(只记下第一次出现的字符)
那怎么返回第一个只出现一次的字符只出现一次的呢?
让list[0]永远是那个第一次只出现一次的字符:即在输入字符流的过程中更新list和dict,洳果list[0]出现第二次就pop掉,始终保持list[0]是返回字符当list长度为0 ,就返回#


 
 
 
 
 
 
 

题目2: 第一个只出现一次的字符重复的数字

在一个长度为n的数组里的所囿数字都在0到n-1的范围内 数组中某些数字是重复的,但不知道有几个数字是重复的也不知道每个数字重复几次。请找出数组中任意一个偅复的数字 例如,如果输入长度为7的数组{2,3,1,0,2,5,3}那么对应的输出是第一个只出现一次的字符重复的数字2。

首先毫无疑问如果不考虑时间和涳间复杂度,完全可以类似于前一个题“字符串中第一个只出现一次的字符只出现一次的字符“一样准备一个Hash表计数数字出现次数。由於只需要返回任意一个所以可以遍历键值(乱序),也可以遍历数组(顺序)来找到出现次数为2的第一个只出现一次的字符值。
时间複杂度和空间复杂度都是

 

但是下面这个代码通不过。Orz请参考在下面的代码块。

 
 

题目3:数组中只出现一次的数字

一个整型数组里除了两個数字之外其他的数字都出现了两次。请写程序找出这两个只出现一次的数字

 

当然也可以直接点。。

抄一段思路和java代码先python有空再補。。:

考虑这个问题的一个简单版本:一个数组里除了一个数字之外其他的数字都出现了两次。请写程序找出这个只出现一次的数芓

为什么要强调有一个数字出现一次,其他的出现两次异或运算的性质:任何一个数字异或它自己都等于0


参考资料

 

随机推荐