请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。
如果当前字符流没有存在出现一次的字符,返回#字符。
方法一:有序的哈希表
1 | import java.util.Map; |
复杂度分析:时间复杂度为O(n),空间复杂度为O(n)。其中,n为字符串的长度。
方法二:两个数组
思路:使用两个数组,一个用于存储每个字符出现的次数,另一个按照字符出现的顺序依次存储每个字符。
1 | public class Solution { |
复杂度分析:时间复杂度为O(n),空间复杂度为O(n)。其中,n为字符串的长度。
方法三:一个数组
1 | import java.util.Arrays; |
复杂度分析:时间复杂度和空间复杂度均为O(1),与输入规模n无关。