题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
package main import ( "fmt" "bufio" "os" ) func main() { reader := bufio.NewScanner(os.Stdin) for reader.Scan() { s := reader.Text() if IsValid(s) { fmt.Println("OK") } else { fmt.Println("NG") } } } func IsValid(s string) bool { if len(s) <= 8 { return false } m := map[rune]bool{} for _, v := range s { switch { case v >= 'A' && v <= 'Z': m['A'] = true case v >= 'a' && v <= 'z': m['a'] = true case v >= '0' && v <= '9': m['0'] = true default: if v != ' ' && v != '\n' { m['@'] = true } } } if len(m) < 3 { return false } md := make(map[string]bool) for i := 0; i < len(s)-2; i++ { if _, ok := md[s[i:i+3]]; !ok { md[s[i:i+3]] = true } else { return false } } return true }