Страницы

Поиск по вопросам

среда, 17 апреля 2019 г.

Как определить, является ли заданная строка десятичным представлением натурального числа от 1 до 2^64-1 включительно?

Еще условие: строка не должна начинаться с "0".
Например:
"0" – нет "1" – да "07" – нет "18446744073709551615" (264 − 1) – да "18446744073709551616" (264) – нет


Ответ

Как вариант
package main
import ( "fmt" "strconv" "strings" )
func checkStr(str string) bool {
if strings.TrimPrefix(str, "0") != str { fmt.Println("Начинается с 0") return false } if _, err := strconv.ParseUint(str, 10, 64); err != nil { fmt.Println(err) return false } return true }
func main() { fmt.Println(checkStr("18446744073709551615")) fmt.Println(checkStr("18446744073709551616")) fmt.Println(checkStr("1b")) fmt.Println(checkStr("-1234567")) fmt.Println(checkStr("07")) }

Комментариев нет:

Отправить комментарий