class Solution {
public:
int FirstNotRepeatingChar(string str) {
map<char,int>mp;
for(int i=;i<str.size();i++){
mp[str[i]]++;
}
for(int i=;i<str.size();i++){
if(mp[str[i]]==)
return i;
}
return -;
}
};

C++ Map常见用法说明: https://blog.csdn.net/shuzfan/article/details/53115922

C++ STL中哈希表 hash_map从头到尾详细介绍 : https://www.cnblogs.com/evidd/articles/8821349.html

一些简单用法:

int FirstNotRepeatingChar(string str) {
map<char, int> mp; //遍历字符串,建立key:str[i] 和value: mp[str[i]]对应的map
for (int i = ; i < str.size(); ++i)
mp[str[i]]++; map<char, int>::iterator it;//采用迭代器,循环输出mp
it = mp.begin(); //可以看到str = "bgbddf";字符出现顺序是bgdf
while (it != mp.end()) //map是基于红黑树构造的,会自动按字母序号重新排序,变成bdfg
{
cout << it->first<<' ';
cout << it->second << endl;
it++;
} it = mp.find('d');//查找key
if (it != mp.end())
//mp.erase(it); // d被成功删除
cout << mp['d']<< endl; //返回key对应的value, map不支持返回该元素的索引
//mp中没有关键字1,使用[]取值会导致插入。 因此,该语句不会报错,会插入一对('\x1',0)。
//同时由于数字的ASCII码小于字母,这个插入会被置于mp首位,而不是索引为1的位置。
cout << mp[] << endl; for (int i = ; i < str.size(); ++i){ //以ster.size()进行循环迭代,保证这里的字符顺序和原始str一致
//cout << str[i] << " "<<mp[str[i]] << endl;
if (mp[str[i]] == ) //返回第一个出现一次的字符的索引位置
return i;
}
return -; //不存在就返回-1
}

[剑指offer] 50. 第一个只出现一次的字符 + map,hashmap 及其区别的更多相关文章

  1. 剑指 Offer 50. 第一个只出现一次的字符 + 哈希表 + 有序哈希表

    剑指 Offer 50. 第一个只出现一次的字符 Offer_50 题目详情 方法一:使用无序哈希表 package com.walegarrett.offer; /** * @Author Wale ...

  2. 每日一题 - 剑指 Offer 50. 第一个只出现一次的字符

    题目信息 时间: 2019-07-03 题目链接:Leetcode tag:哈希表 难易程度:简单 题目描述: 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字 ...

  3. 【力扣】剑指 Offer 50. 第一个只出现一次的字符

    在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母. 示例: s = "abaccdeff"返回 "b" s = &qu ...

  4. 剑指 Offer 50. 第一个只出现一次的字符

    本题 题目链接 题目描述 我的题解 (方法三应用更广泛:方法一虽有限制,但很好用,此题中该方法效率也最高) 方法一:(适用于范围确定的) 思路分析 该字符串只包含小写字母,即字符种类最多26个 开一个 ...

  5. 【剑指Offer】第一个只出现一次的字符 解题报告(Python)

    [剑指Offer]第一个只出现一次的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  6. Go语言实现:【剑指offer】第一个只出现一次的字符位置

    该题目来源于牛客网<剑指offer>专题. 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1( ...

  7. 《剑指offer》第一个只出现一次的字符

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

  8. 剑指Offer:第一个只出现一次的字符

    题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",这输出'b' // 第一个只出现一次的字符 #include <stdio.h> char f ...

  9. 剑指OFFER之第一个只出现一次的字符(九度OJ1283)

    题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字 ...

随机推荐

  1. 杭电(hdu)ACM 1010 Tempter of the Bone

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  2. 你真懂JavaScript吗?

    正文 题目1: if (!("a" in window)) { var a = 1; } alert(a); 题目2 var a = 1, b = function a(x) { ...

  3. sqlalchemy.orm.exc.flusherror:错误解决

    使用sqlalchemy创建model 初次代码: class UserModel(db.Model): __tablename__ = "users" id = db.Colum ...

  4. 8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害

    8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害         SharePoint近期已 ...

  5. 黑马day01xml 解析方式与原理分析

    dom解析方式和sax解析

  6. Windows10 显示库、隐藏6个目录、隐藏OneDrive

    Win10的资源管理器与之前的版本号最大的不同就是默认隐藏了库,又在此电脑中显示了6个用户目录. 但因为习惯了使用库进行文件的管理,这一改变有些令人不习惯. 以下就让我来教大家怎样显示库.以及隐藏这6 ...

  7. ROS探索总结(十九)——怎样配置机器人的导航功能

    1.概述 ROS的二维导航功能包.简单来说.就是依据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令. 可是,怎样在特定的机器人上实现导航功能包的功能 ...

  8. u-boot学习(五):u-boot启动内核

    u-boot的目的是启动内核.内核位于Flash中,那么u-boot就要将内核转移到内存中.然后执行命令执行之.这些操作是由bootcmd命令完毕的. bootcmd=nand read.jffs2 ...

  9. Linux命令(十一)——Shell程序设计二(循环控制语句)

    1.if语句 (1)两路分支的if语句 (2)多路条件判断分支的if语句 2.测试语句 (1)文件测试 (2)字符串测试 (3)数值测试 (4)用逻辑操作符进行组合的测试语句 3.case语句 4.f ...

  10. Codeforces Round #349 (Div. 2) C. Reberland Linguistics DP+set

    C. Reberland Linguistics     First-rate specialists graduate from Berland State Institute of Peace a ...