当前位置:网站首页>笔记:unordered_map的理解与使用
笔记:unordered_map的理解与使用
2022-04-22 05:45:00 【What’smean】
unordered_map
unordered_map容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是unordered_map容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。
具体来讲,unordered_map 容器和 map 容器一样,以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。
例题
函数 myAtoi(string s) 的算法如下:
读入字符串并丢弃无用的前导空格
检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。
返回整数作为最终结果。
注意:本题中的空白字符只包括空格字符 ' ' 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/string-to-integer-atoi
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解
class Automaton {
string state = "start";//状态字
unordered_map<string, vector<string>> table = {//定义unordered_map(注意为key value对,其中value为string类型的向量)
{"start", {"start", "signed", "in_number", "end"}},
{"signed", {"end", "end", "in_number", "end"}},
{"in_number", {"end", "end", "in_number", "end"}},
{"end", {"end", "end", "end", "end"}}
};
int get_col(char c) {//根据不同字符选择不同的值,即map中的向量中的对应下标
if (isspace(c)) return 0;//判断是否为空格
if (c == '+' or c == '-') return 1;
if (isdigit(c)) return 2;//是否为数字
return 3;
}
public:
int sign = 1;
long long ans = 0;
void get(char c) {
state = table[state][get_col(c)];//state对应键,get_col(c)对应值得向量坐标
if (state == "in_number") {
ans = ans * 10 + c - '0';
ans = sign == 1 ? min(ans, (long long)INT_MAX) : min(ans, -(long long)INT_MIN);//判断是否超过表达范围
}
else if (state == "signed")//选择符号
sign = c == '+' ? 1 : -1;
}
};
class Solution {
public:
int myAtoi(string str) {
Automaton automaton;
for (char c : str)
automaton.get(c);
return automaton.sign * automaton.ans;
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/string-to-integer-atoi/solution/zi-fu-chuan-zhuan-huan-zheng-shu-atoi-by-leetcode-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
版权声明
本文为[What’smean]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_42492218/article/details/121795085
边栏推荐
- Write an article about DDT data-driven automated testing
- Opencv code
- opencv图像增强
- 记录AD软件学习之坑
- 单、多通道图像反差处理
- Markdown 语法支持测试
- Opencv image enhancement
- Interaction method II between STM32 single chip microcomputer and ld3320 voice module
- QT add PRI compile run: error: fatal error: no input files problem solving
- deep learning object detection
猜你喜欢

蓝桥杯嵌入式省赛第七届:模拟液位检测告警系统”

deep learning object detection

Interaction method II between STM32 single chip microcomputer and ld3320 voice module

Part 75 leetcode exercise (8) 8 String to integer

Blue Bridge Cup embedded expansion board learning DHT11

Rtl8367 learning note 1 - Basics

DS18B20 of Blue Bridge Cup embedded expansion board learning

记录AD软件学习之坑

Daily learning records - reading custom data sets

Part 85 leetcode sword refers to offer dynamic programming (II) frog jumping steps
随机推荐
The Localtime function affects performance
opencv图像增强
LeetCode: 322. Change exchange (dynamic programming, recursion, memo recursion and backtracking)
Opencv code
线程内容学习
Developing Postgres custom function with C language
Compiling OpenSSL of arm64 on M1 chip
STM32 learning note 5 - Calculation of relative position of RGB screen
DS18B20 of Blue Bridge Cup embedded expansion board learning
Add a minimize button to the CPropertySheet window
Jeecgboot online form development - control configuration
蓝桥杯嵌入式扩展板学习之光敏电阻
Binary search and its classical applications (left boundary, right boundary, etc.)
汇编 dos中断功能
机器人抓取物体原理初步
Interaction method II between STM32 single chip microcomputer and ld3320 voice module
Preliminary study on the principle of robot grasping objects
VB operation, Excel format setting and printing page setting (Simplified)
二分查找及其经典应用(左边界,右边界等)
Code color difference of QT learning