第一个只出现一次的字符位置

题目描述

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始

 1 class Solution {
 2 public:
 3     int FirstNotRepeatingChar(string str) {
 4         int len = str.length();
 5         if (len == 0)
 6         {
 7             return -1;
 8         }
 9         map<char,int> mm;
10         for (int i = 0;i < len ; ++i)
11         {
12             if (mm.count(str[i]) == 0)
13             {
14                 mm[str[i]] = 1;
15             }
16             else
17             {
18                 ++ mm[str[i]];
19             }
20         }
21
22         for (int i = 0;i < len ; ++i)
23         {
24             if (mm[str[i]] == 1)
25                 return i;
26         }
27         return -1;
28     }
29 };
时间: 2024-07-30 10:15:45

第一个只出现一次的字符位置的相关文章

剑指Offer - 第一个只出现一次的字符位置

https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&tqId=11187&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 代码

剑指Offer——第一个只出现一次的字符

1.题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 2.代码实现 public class Solution { public int FirstNotRepeatingChar(String str) { if (str == null || str.length() == 0) { return -1; } char[] chars = str.toCharArray(); j

剑指Offer-33.第一个只出现一次的字符(C++/Java)

题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Hashmap将每一个字符出现的值存储起来,然后再遍历字符串,返回第一个字符值为1的索引即可. 程序: C++ class Solution { public: int FirstNotRepeatingChar(string str) { for(int i = 0; i < str.size(); ++

剑指Offer33 第一个只出现一次的字符

1 /************************************************************************* 2 > File Name: 33_FirstNotRepeatChar.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年09月02日 星期五 13时43分20秒 6 ********************************

剑指offer35 第一个只出现一次的字符

class Solution { public: int FirstNotRepeatingChar(string str) { if(!str.size()) return -1; int num[256]={0}; for(int i=0;i<str.size();i++) { num[str[i]]++; } int i=0; while(i<str.size()&&num[str[i]]!=1) i++; if(i==str.size()) return -1; els

第一个只出现一次的字符位置-剑指Offer

第一个只出现一次的字符位置 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.位置索引从0开始 思路 每个字符都做对比的时间复杂度为O(n2),所以我们创建一个哈希表来存储每个字符对应的出现次数,扫描一次存储次数,扫描第二次找出第一个只出现一次的字符,时间复杂度O(n) 牺牲空间换取时间,哈希表查找的时间为O(1) 注意:最后没有符合这样条件的字符的情况 代码 public class Solution { publ

剑指 offer 第一题: 二维数组中的查找

打算写 图解剑指 offer 66 题 的系列文章,不知道大家有没有兴趣 ?? 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 题目分析 图 1 如果没有头绪的话,很显然使用 暴力解法 是完全可以解决该问题的. 即遍历二维数组中的每一个元素,时间复杂度:O(n^2). 其实到这里我们就可以发现,使用这种暴力解法并没有充分利用题目给出的信息.这

31.第一个只出现一次的字符位置

第一个只出现一次的字符位置 参与人数:2802时间限制:1秒空间限制:32768K 本题知识点: 字符串 算法知识视频讲解 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.位置索引从0开始 虽说C++的string类用起来超爽,但是和平时的使用习惯不同,我更喜欢原滋原味的C风格字符.这道题我写了两个版本,一个是C++风格的string,另一个是C风格字符串. 注意,C风格字符串中判断是否到达字符串末尾的两种方法:

【剑指Offer】第一个只出现一次的字符位置

问题描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.位置索引从0开始. 示例: 输入:sabcdsdf 输出:1 算法描述 定义一个52个元素的整型数组aCount,初始化为0,每个字母(大小写)依次对应一个,记录字母出现的次数: 定义一个52个元素的整型数组aPos,初始化为-1,每个字母(大小写)对应一个,记录字母第一次出现的位置: 每次遍历一个到字母,aCount数组里对应字母加1,判断目前aCount数组里该字

《剑指offer》第一个只出现一次的字符位置

[ 声明:版权所有,转载请标明出处,请勿用于商业用途.  联系信箱:[email protected]] 题目链接:http://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出