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. 微博预计要火一阵的SleepSort之Shell及C实现

    今日在微博看到如此奇妙的代码.竟然还有新的sort算法,对于我这样的渣渣必须研究一下,代码例如以下: #!/bin.bash function f() { sleep "$1" / ...

  2. vbs 脚本2

    一些很恶作剧的vbs程序代码 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-16我要评论 恶作剧的vbs代码,这里提供的都是一些死循环或导致系统死机的vbs对机器没坏处,最多关机重启 ...

  3. phonegap(cordova) 自己定义插件代码篇(四)----读取本地图片

    有时候确实知道本地图片地址,要获取到base64  /** * 获取本地图片,包括路径和压缩后的 base64 */ (function (cordova) { var define = cordov ...

  4. Leetcode:remove_element

    一.     题目 给定一个数组和一个值.删除当中和给定值相等的元素.返回得到的新数组长度 二.     分析 刚開始我以为仅仅须要返回最后的数组长度即可了呢! 后来WA了一次才知道还得把心数组构造好 ...

  5. 利用LruCache载入网络图片实现图片瀑布流效果(改进版)

    PS: 2015年1月20日21:37:27 关于LoadImageAsyncTask和checkAllImageViewVisibility可能有点小bug 改动后的代码请參见升级版本号的代码 ht ...

  6. 05.使用jdk发布webservice服务

    无论服务端是用什么写的,使用框架写的还是用jdk写的,它都会发布出来这样一个东西.主要你遵循咱们这七个步骤来走就可以调用了. 咱们现在转换一下角色,自己发布一个服务让别人去调.怎么来发布一个服务? 我 ...

  7. Hdu-6119 小小粉丝度度熊 尺取

    题面 题意:在一大段时间里,告诉你,你签到了哪些区间,现在再给你m张补签卡,问你最多能实现连续签到多少天 题解:那些时间区间是有重叠的,所以我们先排序离散,并得到哪些区间是可以补签的,这样问题就变成, ...

  8. Linux下JDK Tomcat MySQL基本环境搭建

    1. 安装JDK wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1 ...

  9. hdu3572Task Schedule 最大流,判断满流 优化的SAP算法

    PS:多校联赛的题目质量还是挺高的.建图不会啊,看了题解才会的. 参考博客:http://blog.csdn.net/luyuncheng/article/details/7944417 看了上面博客 ...

  10. readonly and const variable

    共同点:都是常量: 不同点:const的值必须在编译前确定,通常在声明的同时赋值:而readonly可在运行时确定: