From f9e02ded8c7da3421021e71087dee0fcb67305b4 Mon Sep 17 00:00:00 2001 From: Openset Date: 2019年1月22日 20:54:41 +0800 Subject: [PATCH] Update: Reverse String --- problems/reverse-string/reverse_string.go | 8 ++--- .../reverse-string/reverse_string_test.go | 34 +++++++++++++------ 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/problems/reverse-string/reverse_string.go b/problems/reverse-string/reverse_string.go index 7a5e56484..4e51a7585 100644 --- a/problems/reverse-string/reverse_string.go +++ b/problems/reverse-string/reverse_string.go @@ -1,9 +1,7 @@ package reverse_string -func reverseString(s string) string { - runes := []rune(s) - for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { - runes[i], runes[j] = runes[j], runes[i] +func reverseString(s []byte) { + for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { + s[i], s[j] = s[j], s[i] } - return string(runes) } diff --git a/problems/reverse-string/reverse_string_test.go b/problems/reverse-string/reverse_string_test.go index 4a9fef60f..bc19da981 100644 --- a/problems/reverse-string/reverse_string_test.go +++ b/problems/reverse-string/reverse_string_test.go @@ -1,18 +1,32 @@ package reverse_string -import "testing" +import ( + "reflect" + "testing" +) + +type caseType struct { + input []byte + expected []byte +} func TestReverseString(t *testing.T) { - tests := map[string]string{ - "hello, world": "dlrow ,olleh", - "你好,世界": "界世,好你", - "A man, a plan, a canal: Panama": "amanaP :lanac a ,nalp a ,nam A", + tests := [...]caseType{ + { + input: []byte{'h', 'e', 'l', 'l', 'o'}, + expected: []byte{'o', 'l', 'l', 'e', 'h'}, + }, + { + input: []byte{'H', 'a', 'n', 'n', 'a', 'h'}, + expected: []byte{'h', 'a', 'n', 'n', 'a', 'H'}, + }, } - - for input, expected := range tests { - output := reverseString(input) - if output != expected { - t.Fatalf("input: %v, output: %v, expected: %v", input, output, expected) + for _, tc := range tests { + output := make([]byte, len(tc.input)) + copy(output, tc.input) + reverseString(output) + if !reflect.DeepEqual(output, tc.expected) { + t.Fatalf("input: %v, output: %v, expected: %v", tc.input, output, tc.expected) } } }

AltStyle によって変換されたページ (->オリジナル) /