关注
IP那个LeetCode上做过,我记得最出乎意料的一点是以0开头的,只能是0,其他判断都还比较简单,DFS+DP很容易解决,代码是我LeetCode上的解决办法,问题略有不同,原问题返回所有IP,这里我size了一下 import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String line = in.nextLine();
System.out.println(restoreIpAddresses(line).size());
}
public static List<String> restoreIpAddresses(String s) {
List<String> ret = new ArrayList<>();
if (s == null || s.length() < 4 || s.length() > 32)
return ret;
findIP(s, 0, 3, new Stack<>(), ret);
return ret;
}
public static void findIP(String s, int start, int part, Stack<String> stack, List<String> ret) {
if (part == -1) {
ret.add(toIP(stack));
return;
}
for (int i = start + 1, count = 0; count < 3 && i <= s.length(); i++, count++) {
if (s.length() - i >= part && s.length() - i <= 3 * part && Integer.parseInt(s.substring(start, i)) < 256) {
stack.push(s.substring(start, i));
findIP(s, i, part - 1, stack, ret);
stack.pop();
}
if (s.charAt(start) == '0')
break;
}
}
public static String toIP(Stack<String> stack) {
StringBuilder ret = new StringBuilder();
for (String s : stack) {
ret.append(s).append(".");
}
return ret.deleteCharAt(ret.length() - 1).toString();
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
04-21 09:11
河海大学 嵌入式工程师 点赞 评论 收藏
分享
05-30 19:15
复旦大学 前端工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习收获 #
19144次浏览 350人参与
# 在国企工作的人,躺平了吗? #
332641次浏览 3856人参与
# 实习吐槽大会 #
21662次浏览 99人参与
# 我的租房踩坑经历 #
13436次浏览 180人参与
# 晒一晒你的工位 #
82445次浏览 291人参与
# 夸夸我的求职搭子 #
190607次浏览 1890人参与
# 小厂实习有必要去吗 #
46129次浏览 267人参与
# 穿越回高考你还会选现在的专业吗 #
14503次浏览 195人参与
# 毕业旅行去哪玩儿 #
760次浏览 22人参与
# 携程求职进展汇总 #
527134次浏览 3907人参与
# 工作压力大怎么缓解 #
79025次浏览 934人参与
# 今年形式下双非本找得到工作吗 #
140284次浏览 1067人参与
# 实习中的菜狗时刻 #
365554次浏览 3292人参与
# 互联网公司评价 #
382759次浏览 3796人参与
# 产运销实习日记 #
51768次浏览 544人参与
# 你最满意的offer薪资是哪家公司? #
25724次浏览 134人参与
# 选完offer后,你后悔学机械吗? #
29110次浏览 162人参与
# 中兴求职进展汇总 #
602959次浏览 2641人参与
# 我的第一份实习怎么找的 #
105951次浏览 1046人参与
# 打工人锐评公司红黑榜 #
144893次浏览 900人参与