题解 | #数字字符串转化成IP地址#

数字字符串转化成IP地址

https://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e

package main

import "fmt"

import "strings"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @return string字符串一维数组
 */

func dfsToFindValidIp(res *[]string, i int, s string, curIpSeq []string) {
	if len(curIpSeq) == 4 && i == len(s) {
		*res = append(*res, strings.Join(curIpSeq, "."))
		return
	}
	//判断剩余的部分能不能组成一个序列
	if len(curIpSeq) == 4 && i != len(s) || i == len(s) && len(curIpSeq) != 4 {
		return
	}

	//当前数字组成的序列
	dfsToFindValidIp(res, i+1, s, append(curIpSeq, fmt.Sprintf("%c", s[i])))
	if s[i] == '0' {
		return
	}
	if i+1 < len(s) {
		//两个字段组合看
		dfsToFindValidIp(res, i+2, s, append(curIpSeq, fmt.Sprintf("%c%c", s[i], s[i+1])))
	}
	if i+2 < len(s) {
		//三个字段组成的序列是否满足要求
		tmpSeg := fmt.Sprintf("%c%c%c", s[i], s[i+1], s[i+2])
		if tmpSeg <= "255" {
			dfsToFindValidIp(res, i+3, s, append(curIpSeq, tmpSeg))
		}
	}
}

func restoreIpAddresses(s string) []string {
	// write code here
	/*
		"25525522135"
		"1111"
		"000256"
	*/
	res := make([]string, 0)
	dfsToFindValidIp(&res, 0, s, make([]string, 0))
	return res
}

全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务