延安市建设局网站,响应式网站要怎么做,软文有哪些推广渠道,wordpress附件投稿这个题虽然是简单题#xff0c;但是看了半天还是没啥好思路#xff0c;最后看了解题学到了不少知识点
1.index() 函数查找序列中首次出现的元素索引
2.zip函数#xff1a;用于将可迭代的对象#xff08;如列表、元组、字典等#xff09;作为参数#xff0c;将对象中对应…这个题虽然是简单题但是看了半天还是没啥好思路最后看了解题学到了不少知识点
1.index() 函数查找序列中首次出现的元素索引
2.zip函数用于将可迭代的对象如列表、元组、字典等作为参数将对象中对应的元素打包成一个个元组然后返回由这些元组组成的对象注意返回的其实是一个迭代器。
例
list1 [1, 2, 3]
list2 [a, b, c]
zipped zip(list1, list2)# 输出这是一个迭代器所以直接打印看到的是它的内存地址
# 要查看其内容可以将其转换为列表
print(list(zipped)) # 输出[(1, a), (2, b), (3, c)]3.字典中的一些用法
a{}
a[1]2
print(a)
下面我会用上面的知识写两种解法
题目
同构字符串
给定两个字符串 s 和 t 判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符同时不改变字符的顺序。不同字符不能映射到同一个字符上相同字符只能映射到同一个字符上字符可以映射到自己本身。
思考
两个不同的字符串要对应他们的结构是否相同首先能想到的就是字典是一一对应的我们可以用字典去做。
代码1
class Solution:def isIsomorphic(self, s: str, t: str) - bool:# 初始化两个字典用于分别记录 s - t 和 t - s 的映射关系s_to_t {}t_to_s {}# 使用 zip 函数同时遍历 s 和 t 的字符对for char_s, char_t in zip(s, t):# 检查是否已经有从 s 中 char_s 到 t 中 char_t 的映射if char_s in s_to_t:# 如果存在映射且映射的目标字符不是当前的 char_t则返回 Falseif s_to_t[char_s] ! char_t:return Falseelse:# 如果不存在映射则建立从 char_s 到 char_t 的映射s_to_t[char_s] char_t# 同样地检查是否已经有从 t 中 char_t 到 s 中 char_s 的映射if char_t in t_to_s:# 如果存在映射且映射的目标字符不是当前的 char_s则返回 Falseif t_to_s[char_t] ! char_s:return Falseelse:# 如果不存在映射则建立从 char_t 到 char_s 的映射t_to_s[char_t] char_s# 如果循环结束时没有发现不符合条件的映射关系则返回 True表示 s 和 t 是同构的return True
从解题中看到一个更简单的用index函数去做的
代码2
class Solution:def isIsomorphic(self, s: str, t: str) - bool:a0slist(s)tlist(t)i0j0while ilen(s) and jlen(s):if s.index(s[i])t.index(t[j]):a1i1j1else:return Falsereturn alen(s)