当前位置: 首页 > news >正文

同构字符串(C++解法)

题目

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = "egg", t = "add"
输出:true

示例 2:

输入:s = "foo", t = "bar"
输出:false

示例 3:

输入:s = "paper", t = "title"
输出:true

C++代码

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;/*
* 同构字符串的判断
* 使用两个无序哈希表保存映射关系
* 如果有映射关系但是值不同,返回false
*/
bool isIsomorphic(string s, string t) {if (s.size() != t.size()) {return false;}int len = s.size();unordered_map<char, char> s2t;unordered_map<char, char> t2s;for (int i = 0; i < len; ++i) {char x = s[i], y = t[i];if ((s2t.count(x) && s2t[x] != y) || (t2s.count(y) && t2s[y] != x)) {return false;}s2t[x] = y;t2s[y] = x;}return true;
}int main() {string s = "egg";string t = "add";bool ans = isIsomorphic(s, t);cout << boolalpha << ans << endl;return 0;
}

分析

同构字符串的判断,使用两个无序哈希表保存映射关系,如果有映射关系但是值不同,返回 false,否则返回 true。

http://www.lryc.cn/news/197995.html

相关文章:

  • 『Linux升级路』基本指令
  • python argparse解析参数
  • 【数据挖掘】数据挖掘、关联分析、分类预测、决策树、聚类、类神经网络与罗吉斯回归
  • nodejs+vue 学生宿舍管理系统设计与实现
  • 汽车R155法规包含那些国家?
  • 一个简易的低代码
  • 【JVM系列】- 类加载子系统与加载过程
  • Amazon图片下载器:利用Scrapy库完成图像下载任务
  • Unity中Shader的Pass的复用
  • vue内容自适应方法
  • RustDay05------Exercise[41-50]
  • C语言实现通讯录(超详细)
  • 【Python机器学习】零基础掌握MinCovDet协方差估计
  • 2023年【四川省安全员A证】模拟试题及四川省安全员A证作业模拟考试
  • Flask项目log的集成
  • Open3D(C++) 最小二乘拟合平面(拉格朗日乘子法)
  • c语言练习93:环形链表的约瑟夫问题
  • 从入门到进阶 之 ElasticSearch 文档、分词器 进阶篇
  • 亚马逊云科技多项新功能与服务,助力各种规模的组织拥抱生成式 AI
  • 网站布局都有哪些?
  • 第17章 MQ(一)
  • LeetCode算法刷题(python) Day41|09动态规划|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • Spring(四)
  • 2023-10-8讯飞大模型部署2024秋招后端一面(附详解)
  • 如何为 Elasticsearch 创建自定义连接器
  • Debian11 安装 OpenJDK8
  • [Machine Learning][Part 6]Cost Function代价函数和梯度正则化
  • 工业自动化编程与数字图像处理技术
  • JY61P.C
  • Go编程:使用 Colly 库下载Reddit网站的图像