剑指offer——面试题35:第一个只出现一次的字符

Solution1:

垃圾算法不看也罢!自己想到的垃圾算法

class Solution {
public:int FirstNotRepeatingChar(string str) {if(str.size() == 0)return -1;// -1值是提交一遍试错试出来的else {map<char,int> res;for(int i = 0; i < str.size(); i++){if(res.find(str[i]) == res.end()) //注意在map中若找不到关键字则返回尾迭代器res[str[i]] = 1;else res[str[i]]++;}int temp_begin = 0, first_begin = INT_MAX;for(auto iter = res.begin(); iter != res.end(); iter++)if(iter->second == 1){temp_begin = str.find_first_of(iter->first);first_begin = min(temp_begin,first_begin);}return first_begin;}}
};

Solution2:

还是利用哈希的思想,啊~
参考网址:https://www.nowcoder.com/profile/826671/codeBookDetail?submissionId=14914215
代码如此简化的原因是:字符本质上就是数字啊,字符的ASCII码值范围是从0到255共256个字符。

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

剑指offer——面试题35:第一个只出现一次的字符相关推荐

  1. 剑指offer面试题[35]-第一个只出现一次的字符

    题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置. 分析:        这个题目最直观的思路是:从头开始扫描这个字符串 ...

  2. 剑指Offer - 面试题50. 第一个只出现一次的字符(unordered_map)

    1. 题目 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. 示例: s = "abaccdeff" 返回 "b"s = "&q ...

  3. 剑指offer面试题50. 第一个只出现一次的字符(哈希表)

    题目描述 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母. 思路 详见链接 代码 class Solution:def firstUniqueChar(se ...

  4. 【剑指offer-Java版】35第一个只出现一次的字符

    第一个只出现一次的字符: 对于给定的字符,遍历一遍,然后将其映射到一个hash表中,遍历完成之后,遍历哈希表, 遇到的第一个哈希值为1所对应的字符就是第一个只出现了一次的字符 public class ...

  5. [剑指offer]面试题35:第一个只出现一次的字符

    面试题35:第一个只出现一次的字符 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 代码如下: char FirstNotRepeatin ...

  6. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  7. 剑指offer面试题35. 复杂链表的复制(DFS)(深拷贝)

    题目描述 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. ...

  8. Java详解剑指offer面试题50--第一个只出现一次的字符

    Java详解剑指offer面试题50–第一个只出现一次的字符 找出字符串中找出第一个只出现一次的字符,比如输入"abacceff",则输出'b' 要想知道某个字符是不是只出现了一次 ...

  9. 剑指offer——面试题55:字符流中第一个不重复的字符

    剑指offer--面试题55:字符流中第一个不重复的字符 Solution1: 当年第一次做这个题的做法 对此题最大的感想是: 1)区分deque(双端队列)和queue(队列): 2)要熟悉queu ...

最新文章

  1. Linux Centos7 命令总结
  2. mysqlmediumtext,分享面经!
  3. 真香啊!基于SpringBoot 的CMS系统,拿去开发企业官网
  4. 肝货!你想要的资源这里都有!
  5. Spring5的通信报文
  6. Spring集成Junit步骤和代码实现
  7. winpcap的程序(转)
  8. python文件编码转换工具_python实现unicode转中文及转换默认编码的方法
  9. devops项目经理_DevOps:如何避免交接导致项目死亡
  10. Java-Concurrent 线程池ThreadPoolExecutor使用
  11. 如何让我的网站(独立网站或者blog)被百度收录?
  12. vue-devtools安装及使用
  13. Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord
  14. 消息队列之取消会议和自动退款处理
  15. Cerebral Cortex:疼痛热刺激引起的脑功能网络分离与整合
  16. matlab如何计算矩阵的幂,MATLAB矩阵幂算法
  17. 商品属性与商品产品之间的表设计结构,供参考!
  18. Python爬虫——爬取股票信息生成csv文件
  19. 万字讲解Apollo,全网Apollo资料整理和学习
  20. python-函数的递归

热门文章

  1. 数据结构笔记(十四)-- 串的模式匹配算法
  2. linux live cd 定制,如何创建定制的Ubuntu Live CD或者USB的简易方式
  3. 服务器装系统提示获取分区失败,u盘安装系统分区错误解决方法
  4. python字符串驻留机制_Python中的字符串驻留
  5. linux根据端口号找目录,Linux通过程序端口寻找程序路径
  6. python里eval和input组合使用_python中eval()函数和input()函数用法解析
  7. css3 混合,css3混合模式
  8. python操作mysql事务提交_python关于Mysql操作
  9. java字符串字符排列组合_如何在Java中查找字符串的所有排列
  10. android自定义进度条_Android中的自定义进度栏