剑指 Offer 50. 第一个只出现一次的字符 + 哈希表 + 有序哈希表
剑指 Offer 50. 第一个只出现一次的字符
Offer_50
题目详情

方法一:使用无序哈希表

package com.walegarrett.offer;
/**
* @Author WaleGarrett
* @Date 2021/2/8 22:13
*/
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 题目详情:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
*/
/**
* 方法一:使用无序哈希表
*/
public class Offer_50 {
public char firstUniqChar(String s) {
int len = s.length();
HashMap<Character, Integer> map = new HashMap<>();
for(int i=0;i<len;i++){
char ch = s.charAt(i);
if(map.containsKey(ch))
map.put(ch, map.get(ch) + 1);
else map.put(ch, 1);
}
for(int i=0;i<len;i++){
char ch = s.charAt(i);
if(map.getOrDefault(ch, -1) == 1){
return ch;
}
}
return ' ';
}
}
方法二:使用有序哈希表(LinkedHashMap)

/**
* 方法二:使用有序哈希表(按照插入顺序排序)
*/
class Offer_50_2 {
public char firstUniqChar(String s) {
int len = s.length();
Map<Character, Integer> map = new LinkedHashMap<>();
for(int i=0;i<len;i++){
char ch = s.charAt(i);
if(map.containsKey(ch))
map.put(ch, map.get(ch) + 1);
else map.put(ch, 1);
}
for(Map.Entry<Character, Integer> entry : map.entrySet()){
if(entry.getValue() == 1)
return entry.getKey();
}
return ' ';
}
}
剑指 Offer 50. 第一个只出现一次的字符 + 哈希表 + 有序哈希表的更多相关文章
- 每日一题 - 剑指 Offer 50. 第一个只出现一次的字符
题目信息 时间: 2019-07-03 题目链接:Leetcode tag:哈希表 难易程度:简单 题目描述: 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字 ...
- 【力扣】剑指 Offer 50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母. 示例: s = "abaccdeff"返回 "b" s = &qu ...
- 剑指 Offer 50. 第一个只出现一次的字符
本题 题目链接 题目描述 我的题解 (方法三应用更广泛:方法一虽有限制,但很好用,此题中该方法效率也最高) 方法一:(适用于范围确定的) 思路分析 该字符串只包含小写字母,即字符种类最多26个 开一个 ...
- [剑指offer] 50. 第一个只出现一次的字符 + map,hashmap 及其区别
class Solution { public: int FirstNotRepeatingChar(string str) { map<char,int>mp; ;i<str.si ...
- 【剑指Offer】第一个只出现一次的字符 解题报告(Python)
[剑指Offer]第一个只出现一次的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...
- Go语言实现:【剑指offer】第一个只出现一次的字符位置
该题目来源于牛客网<剑指offer>专题. 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1( ...
- 《剑指offer》第一个只出现一次的字符
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 剑指Offer:第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",这输出'b' // 第一个只出现一次的字符 #include <stdio.h> char f ...
- 剑指OFFER之第一个只出现一次的字符(九度OJ1283)
题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字 ...
随机推荐
- hdu5491 The Next
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- Warm up HDU - 4612 树的直径
题意:给出n个点和m条边的无向图,存在重边,问加一条边以后,剩下的桥的数量最少为多少. 题解: 你把这个无向图缩点后会得到一个只由桥来连接的图(可以说这个图中的所有边都是桥,相当于一棵树),然后我们只 ...
- c语言中qsort函数的使用、编程中的一些错误
qsort()函数: 功能:相当于c++sort,具有快排的功能,复杂度的话nlog(n)注:C中的qsort()采用的是快排算法,C++的sort()则是改进的快排算法.两者的时间复杂度都是nlog ...
- 重新上手c语言的一些坑
c语言结构体不能声明函数,放几个函数指针倒是没问题 c语言结构体不能在声明时初始化 声明两个指针 int *a,*b; 或者typedef int* int_P int_P a,b; typedef要 ...
- unity编辑器扩展学习
扩展编辑器实际上就是在unity菜单栏中添加一些按钮,可以一键执行一些重复性的工作. 一.添加按钮 1.简单使用MenuItem特性 using UnityEngine; using UnityEdi ...
- Linux的IO调度程序
Linux的IO调度机制浅析 现代计算机体系中,磁盘的速度和CPU的速度差距太大了,如果简单的将系统的IO请求按照请求的顺序进行顺序处理的话,系统的IO开销将导致系统的效率十分的低下,因此就需要将IO ...
- Makefile 赋值 函数定义 等小知识点
1.赋值 == 到用的时候实际才去赋值:= 立刻赋值?= 未赋值才赋值+= 2.多层变量 多层变量引用(各种复杂组合...)a =bb= cc= dd =1$($($($(a)))) 最终等于1 3. ...
- 正则表达式 test 踩坑指南
正则表达式 test 踩坑指南 test 只能使用一次,第二次返回的是错误结果! reg = /edg|edge/g; /edg|edge/g reg.test(`edg`) true reg.tes ...
- URLSearchParams & shape URL params
URLSearchParams https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams var paramsString = ...
- VSCode & outline & source code
VSCode & outline & source code Dart 源码学习 outline 速览 dart-core List class instance-methods ht ...