题解 | #查找兄弟单词#

查找兄弟单词

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])
	}
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务