はじめに
LeetCodeの問題を解答します。
なるべく、問題の和訳と詳細なコメントを書いています。
余裕があれば、複数のアプローチの解答と、実際の面接を想定して英語での解法やコメントを書いています。
これまでこのサイトでメモしてきた問題はこのページに全て載せています。
二分探索、連結リストなど、テーマを絞って集中的に解きたい方は以下の記事が有用です。
LeeetCodeの問題をアルゴリズムとデータ構造による分類しました。
また、LeetCodeではAtcoderと違ってクラスと関数を定義して解答します。
LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめています。
はじめてLeetCodeに触れる方はこちらの記事も役に立つと思います。
ポイント
-
- ハッシュマップ(辞書)やsetの使い方を押さえる
詳細
問題
原文
Given two strings
ransomNote
andmagazine
, returntrue
ifransomNote
can be constructed by using the letters frommagazine
andfalse
otherwise.Each letter in
magazine
can only be used once inransomNote
.
Example 1:
12 Input: ransomNote = "a", magazine = "b"Output: falseExample 2:
12 Input: ransomNote = "aa", magazine = "ab"Output: falseExample 3:
12 Input: ransomNote = "aa", magazine = "aab"Output: true
Constraints:
1 <= ransomNote.length, magazine.length <= 105
ransomNote
andmagazine
consist of lowercase English letters.
内容(和訳)
ransomNoteとmagazineの2つの文字列が含まれる変数が与えられます。
ransomNoteに含まれる文字がmagazineに含まれる文字で構成できる場合はTrue、そうでなければFalseを返してください。
magazineの各文字はransomNote内の文字列を構成するために一度だけ使うことができます。
※正しくない可能性があります。
解答
解答1:Python, Collections.Counter
1 2 3 4 5 6 7 8 9 |
class Solution(object): def canConstruct(self, ransomNote, magazine): #str1 and str2 are counter objects which have count of each letter in respective variable. str1, str2 = collections.Counter(ransomNote), collections.Counter(magazine) # "&" is extract common letter between two variabels. #And if common letters are same to str1(ransomNote), return True if str1 & str2 == str1: return True return False |
解答2:Python, Set
終わりに
補足・参考・感想
問題を分類しました。テーマごとに集中して問題を解くことができます。
LeeetCodeの問題をアルゴリズムとデータ構造による分類
LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめました。
他の問題もどうぞ
前:
次:
コメント