20180320 今日算法

2018-03-20 08:26:54 +08:00
 gbin
Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

See https://leetcode.com/problems/restore-ip-addresses/

PS: 希望有兴趣的小伙伴一起出题。
3324 次点击
所在节点    算法
11 条回复
zjp
2018-03-20 08:44:39 +08:00
换一种描述,在字符串里插入 3 个. 使之符合 IP 地址的规范
每个.前的字符只能有 1-3 个,3 层循环的效率也还行
lhx2008
2018-03-20 09:25:04 +08:00
这个写出来惨不忍睹,用递归,下 123 位点一下,检查是不是符合 ip 规范,不符合终结。否则,继续递归,到第四次点的时候,检查是不是到尾部,是就加进答案,然后统一终止
deadEgg
2018-03-20 09:29:06 +08:00
递归做。

每次取出 1-3 个字符,然后递归下去,跳出条件是取了四次或取出来的字符不符合 1-255。

这个递归中存在部分重叠子问题。也许能改为动态规划
deadEgg
2018-03-20 09:30:01 +08:00
擦 被楼上抢先了
deadEgg
2018-03-20 09:33:02 +08:00
@deadEgg 更正,没有重叠子问题。想错了
mooo
2018-03-20 09:39:18 +08:00
检查可以组合成的 1-255 字符, 用生成的字符 组合成 ip 地址
lhx2008
2018-03-20 09:55:58 +08:00
@mooo 但是 ip 地址好像有 42 亿个
mooo
2018-03-20 10:06:06 +08:00
@lhx2008 四个区域 每个区域都是 1-255 的吧
mooo
2018-03-20 10:06:32 +08:00
@lhx2008 0-255
mooo
2018-03-20 10:13:00 +08:00
@lhx2008 看错题目了。
stevenbipt
2018-03-20 10:14:02 +08:00
根据给定的字符串长度考虑一下,分解出来的 4 组数字哪一组的长度小于 3,先填充 0,然后直接每三位分离出来一组数字,这样会不会好一点(就是一个思路,说不定是死胡同,没验证过)(#逃

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/439572

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX