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

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

问题描述:

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

如果 中的字符可以被替换得到 ,那么这两个字符串是同构的。

所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

示例 1:

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

示例 2:

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

示例 3:

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

官方1:

1 class Solution(object):2     def isIsomorphic(self, s, t):3         """4         :type s: str5         :type t: str6         :rtype: bool7         """8         return len(set(s)) == len(set(t)) == len(set(zip(s,t)))

>>>a = [1,2,3]

>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,*zip 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>

未用过的defaultdict:

1 from collections import defaultdict 2 class Solution(object): 3     def isIsomorphic(self, s, t): 4         """ 5         :type s: str 6         :type t: str 7         :rtype: bool 8         """ 9         alpdict1 = defaultdict(int)10         alpdict2 = defaultdict(int)11         for i in range(len(s)):12             sc = s[i]13             st = t[i]14             if alpdict1[sc] != alpdict2[st]:15                 return False16             alpdict1[sc] = i+117             alpdict2[st] = i+118         return True

同时放进dict,其分配的value是相同的。

待看:

1 class Solution(object):         2     def isIsomorphic(self, s, t): 3         """ 4         :type s: str 5         :type t: str 6         :rtype: bool 7         """ 8         if len(s) != len(t): return False 9         n = len(s)10         if n == 0: return True11         12         sa = s[0]13         ta = t[0]14         15         m = {}16         for i in range(1,n):17             if (s[i] == sa and t[i] != ta) or (s[i] != sa and t[i] == ta): return False18             elif s[i] != sa and t[i] != ta: 19                 if sa not in m: m[sa] = ta20                 elif m[sa] != ta: return False21                 sa = s[i]22                 ta = t[i]23         if sa in m and m[sa] != ta: return False24         return True

2018-09-18 20:48:59

转载于:https://www.cnblogs.com/NPC-assange/p/9671351.html

你可能感兴趣的文章
我的友情链接
查看>>
Forefront TMG 服务器中如何规划和实现高可用性
查看>>
Exchange Server 2010 故障分享
查看>>
java正则匹配count字符串
查看>>
Exchange2007/2010如何恢复被禁用或者删除的邮箱
查看>>
第五天:Before -- CMD
查看>>
Docker软件安装系列。
查看>>
我的友情链接
查看>>
LEFT JOIN连表时,ON后多条件无效问题
查看>>
[20180423]flashback tablespace与snapshot standby.txt
查看>>
php中禁止单个ip与ip段访问的代码小结
查看>>
LeetCode-330.Patching Array
查看>>
zxing生成二维码转base64 img直接显示 Image对象转Base64码(java)
查看>>
xfire冲突问题解决(maven配置)
查看>>
C#面向对象(三)接口实现多态
查看>>
Linux下用Java获取本机IP
查看>>
Eclipse的Spring库导入
查看>>
velocity 判断 变量 是否不是空或empty
查看>>
【leetcode】123. Best Time to Buy and Sell Stock III
查看>>
角色设计的特点
查看>>