剑指offer——面试题35:第一个只出现一次的字符
剑指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:第一个只出现一次的字符相关推荐
- 剑指offer面试题[35]-第一个只出现一次的字符
题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置. 分析: 这个题目最直观的思路是:从头开始扫描这个字符串 ...
- 剑指Offer - 面试题50. 第一个只出现一次的字符(unordered_map)
1. 题目 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. 示例: s = "abaccdeff" 返回 "b"s = "&q ...
- 剑指offer面试题50. 第一个只出现一次的字符(哈希表)
题目描述 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母. 思路 详见链接 代码 class Solution:def firstUniqueChar(se ...
- 【剑指offer-Java版】35第一个只出现一次的字符
第一个只出现一次的字符: 对于给定的字符,遍历一遍,然后将其映射到一个hash表中,遍历完成之后,遍历哈希表, 遇到的第一个哈希值为1所对应的字符就是第一个只出现了一次的字符 public class ...
- [剑指offer]面试题35:第一个只出现一次的字符
面试题35:第一个只出现一次的字符 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 代码如下: char FirstNotRepeatin ...
- 剑指offer面试题[40]-数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...
- 剑指offer面试题35. 复杂链表的复制(DFS)(深拷贝)
题目描述 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. ...
- Java详解剑指offer面试题50--第一个只出现一次的字符
Java详解剑指offer面试题50–第一个只出现一次的字符 找出字符串中找出第一个只出现一次的字符,比如输入"abacceff",则输出'b' 要想知道某个字符是不是只出现了一次 ...
- 剑指offer——面试题55:字符流中第一个不重复的字符
剑指offer--面试题55:字符流中第一个不重复的字符 Solution1: 当年第一次做这个题的做法 对此题最大的感想是: 1)区分deque(双端队列)和queue(队列): 2)要熟悉queu ...
最新文章
- Linux Centos7 命令总结
- mysqlmediumtext,分享面经!
- 真香啊!基于SpringBoot 的CMS系统,拿去开发企业官网
- 肝货!你想要的资源这里都有!
- Spring5的通信报文
- Spring集成Junit步骤和代码实现
- winpcap的程序(转)
- python文件编码转换工具_python实现unicode转中文及转换默认编码的方法
- devops项目经理_DevOps:如何避免交接导致项目死亡
- Java-Concurrent 线程池ThreadPoolExecutor使用
- 如何让我的网站(独立网站或者blog)被百度收录?
- vue-devtools安装及使用
- Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord
- 消息队列之取消会议和自动退款处理
- Cerebral Cortex:疼痛热刺激引起的脑功能网络分离与整合
- matlab如何计算矩阵的幂,MATLAB矩阵幂算法
- 商品属性与商品产品之间的表设计结构,供参考!
- Python爬虫——爬取股票信息生成csv文件
- 万字讲解Apollo,全网Apollo资料整理和学习
- python-函数的递归
热门文章
- 数据结构笔记(十四)-- 串的模式匹配算法
- linux live cd 定制,如何创建定制的Ubuntu Live CD或者USB的简易方式
- 服务器装系统提示获取分区失败,u盘安装系统分区错误解决方法
- python字符串驻留机制_Python中的字符串驻留
- linux根据端口号找目录,Linux通过程序端口寻找程序路径
- python里eval和input组合使用_python中eval()函数和input()函数用法解析
- css3 混合,css3混合模式
- python操作mysql事务提交_python关于Mysql操作
- java字符串字符排列组合_如何在Java中查找字符串的所有排列
- android自定义进度条_Android中的自定义进度栏