题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
package main import ( "bufio" "fmt" "os" "sort" "strconv" "strings" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { strInput := scanner.Text() strSli := strings.Fields(strInput) if len(strSli) < 1 { fmt.Printf("strInput not valid") return } n, err := strconv.Atoi(strSli[0]) if err != nil { fmt.Printf("strconv for n err:%v", err) return } if len(strSli) != (n + 3) { fmt.Printf("strInput length not valid") return } xStr := strSli[n+1] kStr := strSli[n+2] var xCountMap = make(map[string]int) for _, char := range xStr { if (char < 'a' || char > 'z') && (char < 'A' || char > 'Z') { fmt.Printf("current char for xStr not valid") return } if _, ok := xCountMap[string(char)]; ok { xCountMap[string(char)]++ } else { xCountMap[string(char)] = 1 } } var brothers = make([]string, 0) for i := 1; i <= n; i++ { tmp := strSli[i] tmpCountMap := make(map[string]int) if len(tmp) != len(xStr) { continue } if tmp == xStr { continue } for _, val := range tmp { if _, ok := xCountMap[string(val)]; !ok { continue } if _, ok := tmpCountMap[string(val)]; ok { tmpCountMap[string(val)]++ } else { tmpCountMap[string(val)] = 1 } } if len(tmpCountMap) != len(xCountMap) { continue } var count int for k, v := range tmpCountMap { if xVal, ok := xCountMap[k]; !ok { break } else { if v != xVal { break } } count++ } if count == len(tmpCountMap) { brothers = append(brothers, tmp) } } sort.Strings(brothers) k, err := strconv.Atoi(kStr) if err != nil { fmt.Printf("kStr Atoi err:%v", err) return } fmt.Printf("%d\n", len(brothers)) if k < 1 || k > len(brothers) { //fmt.Printf("kStr not valid, err:%v", err) return } fmt.Printf("%s\n", brothers[k-1]) } }