IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 哈希表的使用 -> 正文阅读

[C++知识库]哈希表的使用

哈希表一般用于存储键值对即key-val

一般是由数组和链表构成

常用操作

//查找是否存在键值
unordered_map<int,int> hash;
hash.find(key)==hash.end();
hash.count(key)==1;

例题

290. Word Pattern

由于C++中的哈希表不能查找某一值的存在,只能查找某一键是否存在,所以C++需要两个哈希表来相互存储。

class Solution {
public:
    //将字符串传入到数组中
    vector<string> split(string &s) {
	    string temp;
	    vector<string> v;
	    for (int i = 0; i < s.size(); i++) {
		    if (s[i] != ' ')temp += s[i];
		    else {
			v.push_back(temp);
			temp = "";
		    }
	    }
	    v.push_back(temp);
	    return v;
    }

    bool wordPattern(string pattern, string s) {
        //两个哈希表双向存储
        //事实上如果C++STL中如果有类似于java的containsKey函数,只需要一个哈希表就足够
        unordered_map<string,char> hash1;
        unordered_map<char,string> hash2;
        vector<string> v = split(s);

        if(v.size()!=pattern.size()) return false;  

        for(int i=0;i<pattern.size();i++){
             //如果存在并且相互对应
            if(hash1.count(v[i]) && hash2[pattern[i]] != v[i]) return false;

            if(hash2.count(pattern[i]) && hash1[v[i]] != pattern[i]) return false;
            
            //双向映射
            hash1[v[i]] = pattern[i];

            hash2[pattern[i]] = v[i];
            
        }
        return true;
    }
};

?C++中没有split函数对字符串进行划片,手写辅助函数split()。

未完待续!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:31:54  更:2021-07-28 07:32:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/29 11:05:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码