From c17cc27f63e0266dd7d0c45ff416163c552e14e3 Mon Sep 17 00:00:00 2001 From: openset Date: Sun, 22 Sep 2019 10:36:49 +0800 Subject: [PATCH] Add: Valid Number --- problems/valid-number/valid_number.go | 13 +++- problems/valid-number/valid_number_test.go | 80 +++++++++++++++++++++- 2 files changed, 91 insertions(+), 2 deletions(-) diff --git a/problems/valid-number/valid_number.go b/problems/valid-number/valid_number.go index 1b4a7d962..6e4fed5a7 100644 --- a/problems/valid-number/valid_number.go +++ b/problems/valid-number/valid_number.go @@ -1 +1,12 @@ -package valid_number +package problem_65 + +import ( + "strconv" + "strings" +) + +func isNumber(s string) bool { + s = strings.TrimSpace(s) + _, err := strconv.ParseFloat(s, 64) + return err == nil || err.(*strconv.NumError).Err != strconv.ErrSyntax +} diff --git a/problems/valid-number/valid_number_test.go b/problems/valid-number/valid_number_test.go index 1b4a7d962..99a6eb85c 100644 --- a/problems/valid-number/valid_number_test.go +++ b/problems/valid-number/valid_number_test.go @@ -1 +1,79 @@ -package valid_number +package problem_65 + +import "testing" + +type caseType struct { + input string + expected bool +} + +func TestIsNumber(t *testing.T) { + tests := [...]caseType{ + { + input: "0", + expected: true, + }, + { + input: " 0.1", + expected: true, + }, + { + input: "abc", + expected: false, + }, + { + input: "1 a", + expected: false, + }, + { + input: "2e10", + expected: true, + }, + { + input: " -90e3 ", + expected: true, + }, + { + input: " 1e", + expected: false, + }, + { + input: "e3", + expected: false, + }, + { + input: " 6e-1", + expected: true, + }, + { + input: " 99e2.5 ", + expected: false, + }, + { + input: "53.5e93", + expected: true, + }, + { + input: " --6 ", + expected: false, + }, + { + input: "-+3", + expected: false, + }, + { + input: "95a54e53", + expected: false, + }, + { + input: "078332e437", + expected: true, + }, + } + for _, tc := range tests { + output := isNumber(tc.input) + if output != tc.expected { + t.Fatalf("input: %v, output: %v, expected: %v", tc.input, output, tc.expected) + } + } +}