博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 205
阅读量:5031 次
发布时间:2019-06-12

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

题目描述:

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.

 

解法一:

这是一个很好想的解法,比较好想,但是效率不高,就是一边遍历一边将元素插入map,这样要同时建立s到t的map和t到s的map,同时还要检查不一致,如果出现不一致,则返回false,否则返回true。

bool isIsomorphic(string s, string t){    map
s_map; map
t_map; for(int i = 0; i < s.size(); i ++) { if(s_map.find(s[i]) != s_map.end() && s_map.find(s[i])->second != t[i]) return false; else s_map[s[i]] = t[i]; if(t_map.find(t[i]) != t_map.end() && t_map.find(t[i])->second != s[i]) return false; else t_map[t[i]] = s[i]; } return true;}

解法二:

这个解法是我查看其他人的博客看到的,先简单介绍一下算法的思想,这个算法先建立一个对照表,因为char型字符总计128个,所以不用map,也不用unordered_map,而是用一个长度为128的数组来存储对照表,这个对照表仅仅和字符串中字符的位置有关,通过这样的对照表将s和t分别映射到一个新的字符串,满足题目条件的两个字符串应该是在映射后应该相等。

bool isIsomorphic(string s, string t){    if(transferStr(s) == transferStr(t))        return true;    return false;}string transferStr(string s){    char temp = '0';    vector
table(128, 0); for(int i = 0; i != s.size(); i ++) { if(table[s[i]] == 0) table[s[i]] = temp ++; s[i] = table[s[i]]; } return s;}

 

转载于:https://www.cnblogs.com/maizi-1993/p/5894865.html

你可能感兴趣的文章
mybatis09--自连接一对多查询
查看>>
myeclipse10添加jQuery自动提示的方法
查看>>
【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。...
查看>>
视频监控 封装[PlayCtrl.dll]的API
查看>>
软件工程APP进度更新
查看>>
Python 使用正则替换 re.sub
查看>>
CTF中那些脑洞大开的编码和加密
查看>>
简化工作流程 10款必备的HTML5开发工具
查看>>
c++ 调用外部程序exe-ShellExecuteEx
查看>>
Java进击C#——语法之知识点的改进
查看>>
IdentityServer流程图与相关术语
查看>>
BirdNet: a 3D Object Detection Framework from LiDAR information
查看>>
icon fonts入门
查看>>
【Django】如何按天 小时等查询统计?
查看>>
HDU2191(多重背包)
查看>>
测试用例(一)
查看>>
【转】 mysql反引号的使用(防冲突)
查看>>
邮件中的样式问题
查看>>
AJAX 状态值与状态码详解
查看>>
php面向对象编程(oop)基础知识示例解释
查看>>