快手b卷 全ac

1. 
package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	var s string
	fmt.Scanln(&s)

	ss := strings.Split(s, ".")
	if len(ss) == 4 {
		if isIpv4(ss) {
			fmt.Println("IPv4")
			return
		}
		fmt.Println("Neither")
		return
	}

	ss = strings.Split(s, ":")
	if len(ss) == 8 {
		if isIpv6(ss) {
			fmt.Println("IPv6")
			return
		}
		fmt.Println("Neither")
		return
	}

	fmt.Println("Neither")
}

func isIpv4(s []string) bool {
	for i := 0; i < 4; i++ {
		if s[i] == "" {
			return false
		}
		num, err := strconv.Atoi(s[i])
		if err != nil || num < 0 || num > 255{
			return false
		}
		if len(s[i]) > 1 && s[i][0] == '0' {
			return false
		}
	}
	return true
}

func isIpv6(s []string) bool {
	for i := 0; i < 8; i++ {
		str := s[i]
		if str == "" {
			return false
		}
		if str == "00" || str == "000" || str == "0000" {
			return false
		}
	}
	return true
}
2.
package main

import (
	"fmt"
)
var m = map[byte]string {
	'2': "abc",
	'3': "def",
	'4': "ghi",
	'5': "jkl",
	'6': "mno",
	'7': "pqrs",
	'8': "tuv",
	'9': "wxyz",
}

func letterCombinations(digits string) []string {
	if len(digits) == 0 {
		return []string{}
	}

	s := m[digits[0]]
	res := make([]string, 0)
	strs := letterCombinations(digits[1:])
	strsLen := len(strs)
	for i := 0; i < len(s); i++ {
		prefix := s[i:i+1]
		if strsLen == 0 {
			res = append(res, prefix)
		} else {
			for j := 0; j < strsLen; j++{
				res = append(res, prefix + strs[j])
			}
		}
	}

	return res
}

func main() {
	var s string
	fmt.Scanln(&s)
	res := letterCombinations(s)
	fmt.Print("[")
	for i := 0; i < len(res); i++ {
		if i == len(res) - 1 {
			fmt.Print(res[i])
		} else {
			fmt.Print(res[i]+", ")
		}
	}
	fmt.Println("]")
}
3.
package main

import "fmt"

func main() {
	var n int
	fmt.Scanln(&n)
	arr := make([]int, n)
	sum := 0
	for i := 0; i < n; i++ {
		var tmp int
		fmt.Scan(&tmp)
		arr[i] = tmp
		sum += arr[i]
	}

	m := sum / 2
	dp := make([]int, m+1)
	for i := 0; i < n; i++ {
		for j := m; j > 0; j-- {
			if j >= arr[i] {
				if dp[j-arr[i]]+arr[i] > dp[j] {
					dp[j] = dp[j-arr[i]] + arr[i]
				}
			}
		}
	}

	fmt.Println(sum - 2*dp[m])
}
4.
package main

import (
	"fmt"
	"sort"
)

func main() {
	var n int
	fmt.Scanln(&n)

	arr := make([]int, n)
	for i := 0; i < n; i++ {
		var tmp int
		fmt.Scan(&tmp)
		arr[i] = tmp
	}

	if n == 1 {
		fmt.Println(1)
		return
	}
	if n == 0 {
		fmt.Println(0)
		return
	}


	sort.Ints(arr)
	dp := make([][30001]int, n)
	max := 0
	for i := 1; i < n; i++ {
		for j := 0; j < i; j++ {
			diff := arr[i] - arr[j]
			if dp[j][diff] > 0 {
				dp[i][diff] = getMax(dp[j][diff]+1, dp[i][diff])
			} else {
				dp[i][diff] = 2
			}
			max = getMax(max, dp[i][diff])
		}
	}

	fmt.Println(max)
}

func getMax(a, b int) int {
	if a > b {
		return a
	}
	return b
}



#笔试题目##快手#
全部评论
啥岗位,咋题目还不一样呢
点赞 回复 分享
发布于 2019-09-16 23:02
有生之年看到了用go的,我只a了三个,第三个没时间写,先写了第四个。
点赞 回复 分享
发布于 2019-09-16 23:06
**,大佬,我知道你是谁了,你不是在头条实习吗?
点赞 回复 分享
发布于 2019-09-16 23:08

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
1 11 评论
分享
牛客网
牛客企业服务