leetCode 题解之字符串中第一个不重复出现的字符

1、题目描述

Given a string, find the first non-repeating character in it and return it‘s index.

If it doesn‘t exist, return -1.

Examples:  s = "leetcode" return 0.

         s = "loveleetcode", return 2.

Note: You may assume the string contain only lowercase letters.

输入一个字符串,输出字符串中第一次个出现的不重复字符串的下标。

如果不存在这样的字符串输出 -1。

2、问题分析

题目可以使用 hash 的手段来解决,首先将每个字符串中的字符放入一个map 容器中。在map 容器中记录每个字符出现的次数。最后找出第一个出现次数为1 的数。

   C++ 中, 关联容器有两大类,其一是 ,map  ,其二是 set 。map  可以定义为 unordered_map<key,value>,key表示键,value 表示 值,使用 key  来索引 value 。在本题中,

key 是每个输入字符串中每个 字符,value 则是该字符在输入字符串中的出现次数。

关联容器定义如下  :

1 unordered_map<char,int> m;

3、代码

 1 int firstUniqChar(string s) {
 2         // 使用 hash 表将string 中的每一个字符出现次数统计,需要使用无序map 容器
 3
 4     unordered_map<char , int> m;
 5
 6     for( const auto &c : s )
 7         ++m[c];
 8
 9     for( int i = 0; i < s.size(); i++ )
10     {
11         if( m[s[i]]  == 1 )
12             return i;
13     }
14
15
16      return -1;
17     }

原文地址:https://www.cnblogs.com/wangxiaoyong/p/8659376.html

时间: 2024-11-02 21:34:03

leetCode 题解之字符串中第一个不重复出现的字符的相关文章

查找字符串中第一个没有重复出现的字符

1.     public class Simple{ 2.         public static char getChar(String text){ 3.             char c =0xff; 4.             for(int index =0;index <text.length();index ++){ 5.                 c =text.charAt(index); 6.                 if(text.indexOf(

找出字符串中第一个不重复的字符(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

找出字符串中第一个出现次数最多的字符

找出字符串中第一个出现次数最多的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputString:字符串 输出参数(指针指向的内存区域保证有效): char* pChar:出现次数最多的字符 返回值: false 异常失败 true  输出成功 #include <iostream> #include <string.h> using namespace std; b

字符串中第一个出现一次的字符(Java)

正在挑战一个CrackMe的你,把需要填写的前面几位密码都正确猜出了,可是这最后一位密码,好像藏得有点深.CrackMe的作者还挑衅般的在里面藏了个.tar.gz文件,解压缩出来,里面写道你要的最后一个字符就在下面这个字符串里.这个字符是下面整个字符串中第一个只出现一次的字符. (比如,串是abaccdeff,那么正确字符就是b了)然而下面给出来的字符串好像太长太长了,单靠人力完全无法找出来.于是,你需要写一个程序代劳了.输入文件体积较大,请使用一些快速的输入输出手段,不推荐使用cin/cout

LeetCode:反转字符串中的元音字母【345】

LeetCode:反转字符串中的元音字母[345] 题目描述 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle" 示例 2: 输入: "leetcode" 输出: "leotcede" 说明:元音字母不包含字母"y". 题目分析 所谓的做题就是把以前背下来的拿过来改一下即可.双指针碰撞模型,之前已经描述过很多次了,此处不在赘述. 知道AEI

求字符串中第一个只出现一次的字符

问题描述:给定一个字符串,假设字符串中只包含字母和数字,求出这个字符串中第一个只出现一次的字符. 分析:这个题目想要做出来还是比较简单的,关键是如何用高效的方法求解.这里我提供两种方法: 解法一:蛮力法.具体思想为,从第一位开始,拿每一位和后面的每一位进行比较,如果没有出现,则直接输出这个字符. 如果出现,则从第二位开始,再和后面的每一位进行比较,依次类推. 算法的时间复杂度为O(n^2). 解法二:哈希法.采用两次扫描即可实现.需要提前构建一个哈希表,把字符当成key值,把出现的次数当成val

css如何设置字符串中第一个字符的样式

css如何设置字符串中第一个字符的样式:本章节介绍一下如何使用css设置字符串中第一个字符的样式.以前我们实现此效果的方式,可能会在第一个字符上嵌套上一个span标签.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/"

找出字符串中第一个只出现一次的字符

find the first unique character in  a string and you can just traverse this string only one time. if there is no such character, just return '#' and '#' will not appear in the string, else return the character you find. for example: "aAbBABac",