华为社会招聘-软件特战队机考题(B)

1. 有效的ip组合数量。  输入 [0-9]的一串数字, 长度最长为10, 可重复使用。 求总共能组成多少个有效IP:
比如 输入"23", 每一个IP段 可以使用10个组成的数字: 2,  22,222, 223, 232, 233, 3, 32, 33, 33, 23.
所以总的有效的IP总数为: 10 * 10 * 10 * 10.

这个题就是排列组合, 和39很像。

2. 给你输入[]string数组的linux文件path, 让你打印成 Tree . 有缩进那种。 输入的文件路径 可能会有相同的上层目录, 所以要做合并。

两个题难度都不大。
全部评论
这是 od 吗?hr 和我说正式
点赞 回复 分享
发布于 2024-12-01 00:04 北京
package main import ( "bufio" "fmt" "os" "sort" "strings" ) func main() { snr := bufio.NewScanner(os.Stdin) snr.Scan() str := snr.Text() str = strings.Trim(str, " ") nums := []int{} for i := 0; i < len(str); i++ { nums = append(nums, int(str[i]-'0')) } sort.Ints(nums) cnt := helper(nums) //fmt.Println(cnt) sum := cnt * cnt * cnt * cnt fmt.Println(sum) } func helper(nums []int) int { ans := 0 row := 0 var dfs func(start int) dfs = func(start int) { ans++ fmt.Println(row) //fmt.Println("row:", row, ans) for j := start; j < len(nums); j++ { if row*10+nums[j] > 255 { continue } if row == 0 &amp;&amp; nums[j] == 0 { continue } row = row*10 + nums[j] dfs(start) row = row / 10 } } dfs(0) //fmt.Println("nums:", nums) if nums[0] == 0 { return ans } return ans - 1 }
点赞 回复 分享
发布于 2024-09-13 20:55 四川

相关推荐

投递华润银行等公司6个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
4
分享

创作者周榜

更多
牛客网
牛客企业服务