Skip to content

Commit b5c4f5a

Browse files
committed
fix pullrequests/valid_anagram
1 parent 13be050 commit b5c4f5a

File tree

4 files changed

+38
-6
lines changed

4 files changed

+38
-6
lines changed

pullrequests/valid_anagram/step1.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ package validanagram
88
基本的にはそれぞれの文字列に含まれる文字の種類と数が一致しているかを見ています。
99
下の解法について、40行目で0未満になった場合のみfalseを返すのは一見おかしいように見えますが、30行目で文字数が等しいことを確認しているため、一方より多い文字があれば何かの文字は少なくなるはずであるため、ロジック的には問題ないと思います。
1010
*/
11-
func isAnagram_step1(s string, t string) bool {
11+
func isAnagramStep1(s string, t string) bool {
1212
if len(s) != len(t) {
1313
return false
1414
}
@@ -26,7 +26,7 @@ func isAnagram_step1(s string, t string) bool {
2626
return true
2727
}
2828

29-
func isAnagram_unicode_step1(s string, t string) bool {
29+
func isAnagramUnicodeStep1(s string, t string) bool {
3030
if len(s) != len(t) {
3131
return false
3232
}

pullrequests/valid_anagram/step2.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ package validanagram
88
99
下の解法についてはStep1のロジックがわかりづらかったので、より明確になるように変更しました。
1010
*/
11-
func isAnagram_step2(s string, t string) bool {
11+
func isAnagramStep2(s string, t string) bool {
1212
var frequency [26]int
1313
for _, r := range s {
1414
frequency[r-'a']++
@@ -24,7 +24,7 @@ func isAnagram_step2(s string, t string) bool {
2424
return true
2525
}
2626

27-
func isAnagram_unicode_step2(s string, t string) bool {
27+
func isAnagramUnicodeStep2(s string, t string) bool {
2828
frequency := make(map[rune]int)
2929
for _, r := range s {
3030
frequency[r]++

pullrequests/valid_anagram/step3.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//lint:file-ignore U1000 Ignore all unused code
22
package validanagram
33

4-
func isAnagram_step3(s string, t string) bool {
4+
func isAnagramStep3(s string, t string) bool {
55
return frequency(s) == frequency(t)
66
}
77

@@ -15,7 +15,7 @@ func frequency(s string) [26]int {
1515

1616
// ちゃんとUnicodeに対応させるなら結合文字などを考慮する必要がある
1717
// https://github.com/rihib/leetcode/pull/5#discussion_r1706198268
18-
func isAnagram_unicode_step3(s string, t string) bool {
18+
func isAnagramUnicodeStep3(s string, t string) bool {
1919
frequency := make(map[rune]int)
2020
for _, r := range s {
2121
frequency[r]++

pullrequests/valid_anagram/step4.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//lint:file-ignore U1000 Ignore all unused code
2+
package validanagram
3+
4+
func isAnagramStep4(s string, t string) bool {
5+
return frequencies(s) == frequencies(t)
6+
}
7+
8+
func frequencies(s string) [26]int {
9+
var f [26]int
10+
for _, r := range s {
11+
f[r-'a']++
12+
}
13+
return f
14+
}
15+
16+
// ちゃんとUnicodeに対応させるなら結合文字などを考慮する必要がある
17+
// https://github.com/rihib/leetcode/pull/5#discussion_r1706198268
18+
func isAnagramUnicodeStep4(s string, t string) bool {
19+
frequencies := make(map[rune]int)
20+
for _, r := range s {
21+
frequencies[r]++
22+
}
23+
for _, r := range t {
24+
frequencies[r]--
25+
}
26+
for _, n := range frequencies {
27+
if n != 0 {
28+
return false
29+
}
30+
}
31+
return true
32+
}

0 commit comments

Comments
 (0)