今天我们一起挑战leetcode第242题Valid Anagram!
Given two strings s and t, return true if t is an anagram of s, and false otherwise.
Example 1:
Input: s = "anagram", t = "nagaram"
Output: trueExample 2:
Input: s = "rat", t = "car"
Output: false
这题的题目描述虽然很短,但乍看之下又不知道他到底要我们做什麽,他要我们确认t是s的anagram,但anagram的意思是什麽?经过查询之後才知道,原来anagram的意思类似是字的重组与排序,也就是说这个题目要问我们s与t在经过字元任意排序後,是否可以长得一模一样。
这类型的问题其中一个解决方法就是使用排序,只要将两个字串都按照同样的规则排序,如果他们在经过排序後长得一样,就符合了anagram的定义,因此我们可以使用程序内建的排序函式、也可以自刻一个排序演算法,来达到题目的要求。
以下是python3的程序码
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if sorted(s) == sorted(t):
return True
return False
# 也可以只写一行 return sorted(s) == sorted(t)
以下解法是另一组思路,用HashMap也能达到检视两组字串是否再重新排列以後成为相同的字串。
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
dict_ = {}
for i in s:
if i not in dict_:
dict_[i] = 1
else:
dict_[i] += 1
for i in t:
if i not in dict_:
return False
elif dict_[i] == 1:
del dict_[i]
else:
dict_[i] -= 1
return not dict_
上一篇在创造新的资料库时,有提到PRIMARY KEY也就是主键限制!那麽此篇来继续介绍FOREIG...
前言: 因为内存不足以在训练的时候存 SavedModel模型 所以我分离出来 以.h5档案先做训练...
Okay! 了解 fork 跟 pull request 的运作原理後,接下来我们来谈谈 Flow ...
大家好! 昨天的储存容量和储存装置,有没有更容易理解原始型别和物件型别的差异呢? 我们进入今天的主题...
我们在 上上一篇 也有提到过 slate 将 Normalizing 这项功能的实现拆成了第一步骤...