博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Isomorphic Strings 同构字符串
阅读量:5734 次
发布时间:2019-06-18

本文共 1122 字,大约阅读时间需要 3 分钟。

Given two strings s and t, determine if they are isomorphic.

Two strings are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

For example,

Given "egg""add", return true.

Given "foo""bar", return false.

Given "paper""title", return true.

Note:

You may assume both s and t have the same length.

这道题让我们求同构字符串,就是说原字符串中的每个字符可由另外一个字符替代,可以被其本身替代,相同的字符一定要被同一个字符替代,且一个字符不能被多个字符替代,即不能出现一对多的映射。根据一对一映射的特点,我们需要用两个哈希表分别来记录原字符串和目标字符串中字符出现情况,由于ASCII码只有256个字符,所以我们可以用一个256大小的数组来代替哈希表,并初始化为0,我们遍历原字符串,分别从源字符串和目标字符串取出一个字符,然后分别在两个哈希表中查找其值,若不相等,则返回false,若想等,将其值更新为i + 1,代码如下:

class Solution {public:    bool isIsomorphic(string s, string t) {        int m1[256] = {
0}, m2[256] = {
0}, n = s.size(); for (int i = 0; i < n; ++i) { if (m1[s[i]] != m2[t[i]]) return false; m1[s[i]] = i + 1; m2[t[i]] = i + 1; } return true; }};

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
WinSrv 2003系统加固教程
查看>>
***第一天
查看>>
栈的两种实现方式
查看>>
凭啥Java的运行环境称虚拟机,Python的只能称解释器
查看>>
jdk1.8下载全集,包括windows和linux版本
查看>>
Zabbix使用手册-zabbix agent 类型所有key
查看>>
用命令优化数据库
查看>>
感谢51CTO
查看>>
F#初学笔记06
查看>>
利用Failovr Cluster的Hyper-v创建高可用虚拟机
查看>>
Windows Server 2016-管理站点复制(一)
查看>>
FileBeat6.4 快速上手
查看>>
Citrix VDI-in-a-Box 第五篇:Image创建篇
查看>>
BT5里sqlmap注入
查看>>
OutLook取消接收Lync呼叫日志邮件
查看>>
SANS:2013年度安全分析(日志管理)调查报告
查看>>
perl学习笔记(2)
查看>>
南方周末:阿里巴巴的大数据梦
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
ExtJS应用架构设计(三)
查看>>