题目
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。
方法
网上的方法基本都是使用map或者ArrayList存储字符流,不知道是不是我理解错了题意,这里我阐述另一个方法
思路
字符流是一个个读取的,我们初始化一个数组或者一个空字符串用来存储一个个字符,这里我使用空字符串。
题目要求找到当前状态下,第一个出现一次的字符。那么可以利用一个个字符的特性,当读取一个字符的时候,就将这个字符接到字符串到尾部
但接入到尾部有条件限制,必须是前面没有出现过这个字符才加入,如果前面已经存在这个字符,不仅不加入,还要把前面出现的字符删除。目的就是,这个字符串中只包含当前状态下,只出现过一次的字符。那么字符串的首位就是题目要求的了——当前第一个不重复的字符
代码
1 | // Init module if you need |