diff --git a/pullrequests/ransom_note/step1.go b/pullrequests/ransom_note/step1.go new file mode 100644 index 0000000..c54d387 --- /dev/null +++ b/pullrequests/ransom_note/step1.go @@ -0,0 +1,27 @@ +//lint:file-ignore U1000 Ignore all unused code +package ransomnote + +/* +レビュワーの方へ: + - このコードは既にGoの標準のフォーマッタで整形済みです。演算子の周りにスペースがあったりなかったりしますが、これはGoのフォーマッタによるもので、優先順位の高い演算子の周りにはスペースが入らず、低い演算子の周りには入るようになっています。https://qiita.com/tchssk/items/77030b4271cd192d0347 +*/ + +/* +時間:2分 +似たような問題を何回か解いたことがあるので特に困らなかった。 +入力が小文字に限らない場合は、runeをkeyとするmapを使えば良い。その際、Unicodeの扱いには気をつける必要がある。 +https://github.com/rihib/leetcode/pull/5#issue-2446890745 +*/ +func canConstructStep1(ransomNote string, magazine string) bool { + var frequency [26]int + for _, r := range magazine { + frequency[r-'a']++ + } + for _, r := range ransomNote { + frequency[r-'a']-- + if frequency[r-'a'] < 0 { + return false + } + } + return true +} diff --git a/pullrequests/ransom_note/step2.go b/pullrequests/ransom_note/step2.go new file mode 100644 index 0000000..e531624 --- /dev/null +++ b/pullrequests/ransom_note/step2.go @@ -0,0 +1,20 @@ +//lint:file-ignore U1000 Ignore all unused code +package ransomnote + +/* +レビュワーの方へ: + - このコードは既にGoの標準のフォーマッタで整形済みです。演算子の周りにスペースがあったりなかったりしますが、これはGoのフォーマッタによるもので、優先順位の高い演算子の周りにはスペースが入らず、低い演算子の周りには入るようになっています。https://qiita.com/tchssk/items/77030b4271cd192d0347 +*/ +func canConstructStep2(ransomNote string, magazine string) bool { + var frequencies [26]int + for _, r := range magazine { + frequencies[r-'a']++ + } + for _, r := range ransomNote { + frequencies[r-'a']-- + if frequencies[r-'a'] < 0 { + return false + } + } + return true +}