Leetcode 挑战 Day 11 [242. Valid Anagram]

242. Valid Anagram


今天我们一起挑战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: true

Example 2:
Input: s = "rat", t = "car"
Output: false

这题的题目描述虽然很短,但乍看之下又不知道他到底要我们做什麽,他要我们确认t是s的anagram,但anagram的意思是什麽?经过查询之後才知道,原来anagram的意思类似是字的重组与排序,也就是说这个题目要问我们s与t在经过字元任意排序後,是否可以长得一模一样。

Sorted


这类型的问题其中一个解决方法就是使用排序,只要将两个字串都按照同样的规则排序,如果他们在经过排序後长得一样,就符合了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_


<<:  Day02 - 安装 Docker

>>:  Dungeon Mizarka 002

Day 05 - 了解FOREIGN KEY 外键限制!

上一篇在创造新的资料库时,有提到PRIMARY KEY也就是主键限制!那麽此篇来继续介绍FOREIG...

IOS、Python自学心得30天 Day-14 H5与Pb模型档案

前言: 因为内存不足以在训练的时候存 SavedModel模型 所以我分离出来 以.h5档案先做训练...

【Day18】Git 版本控制 - 多人协作 Git Flow

Okay! 了解 fork 跟 pull request 的运作原理後,接下来我们来谈谈 Flow ...

JS 03 - 资料传递

大家好! 昨天的储存容量和储存装置,有没有更容易理解原始型别和物件型别的差异呢? 我们进入今天的主题...

Day 25. slate × Normalizing × Dirty-Path

我们在 上上一篇 也有提到过 slate 将 Normalizing 这项功能的实现拆成了第一步骤...