找到第一个不重复的字符

问题描述:在字符串中找到第一个不重复的字符,如,‘total‘中第一个不重复的字符为‘o‘。

思想:扫描两次字符串,第一次:建立一个对应字符的字典,键值为“出现一次”和“不是一次”;第二次:扫描出第一个键值为“出现一次的”字符。

def searchOnce(s):
    if len(s)==0:
        return -1
    elif len(s)==1:
        return s[0]
    else:
        sDic={}
        once=1
        notonce=2
        for word in s:
            if not sDic.get(word):
                sDic[word]=once
            else:
                sDic[word]=notonce
        for word in s:
            if sDic[word]==once:
                return word
        return -1

if __name__ == "__main__":
    s=‘teeth‘
    print searchOnce(s)

扫描两次,时间复杂度为O(n)。建立字典,空间复杂度增加,最坏为n。

时间: 2024-10-03 07:58:46

找到第一个不重复的字符的相关文章

字符流中第一个不重复的字符-剑指Offer

字符流中第一个不重复的字符 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输入描述 如果当前字符流没有存在出现一次的字符,返回#字符. 思路 模拟一个哈希表,长度为256,索引为字符的编码,初始化为-1,第一次出现时把该字符出现的位置赋给该数组元素,第二次出现时

找出字符串中第一个不重复的字符(JavaScript实现)

如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. 1 //找出字符串中第一个不重复的字符 2 // firstUniqueChar("vdctdvc"); --> t 3 function firstUniqueChar(str){ 4 var str = str || "", 5 i = 0, 6 k = "", 7 _char = "", 8 charMap = {}, 9 result =

查找字符串中第一个不重复的字符

import java.util.*; public class GetFirstNoRepeatChar{ static char getChar(String s){ int len=s.length(); int len_tim=128; char c='F'; int []tim=new int[len_tim]; //以字符做下标,存储该字符出现次数 for(int i=0;i<len;i++){ c=s.charAt(i); tim[c]+=1; } //遍历,取得 for(int

经典算法——字符流中第一个不重复的字符

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. class Solution { public: int occurrence[256];//利用数组occurrence构造哈希表,将字符的

《剑指offer》字符流中第一个不重复的字符

[ 声明:版权所有,转载请标明出处,请勿用于商业用途.  联系信箱:[email protected]] 题目链接:http://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符&

55 - 字符流中第一个不重复的字符

当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字符流中读出前六个字符"google"时,第一个只出现 1 次的字符是"l". 首先要记录一个字符出现的次数,为了实现O(1)查找,使用简易hash表存储.用occurences[256] 记录字符出现的次数.设置: occurences[i] = 0, 该字符未出现: occurences[i] = 1, 该字符出现一次: occurences[i] = 2, 该字符

50-02 字符流中第一个不重复的字符( 时间空间效率的平衡)

题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符.   测试用例: 1)功能测试(读入一个字符,读入多个字符,读入的所有字符都是唯一的,读入的所有字符都是重复出现的) 2)特殊输入测试(读入0个字符时)

字符流中第一个不重复的字符

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符. class Solution { public: //Insert one char from stringstream void Inser

52、字符流中第一个不重复的字符

一.题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 二.解法 1 mport java.util.ArrayList; 2 import java.util.HashMap; 3 public class Solution { 4 HashMap<Ch