leetcode15、
思路:
回溯+剪枝
遍历字符串,先计算第一网段,分别取1 2 3位数字,并组合判断是否符合IP规范,
若符合跳至下一网段,并且索引start挪位,temp+本网段值+“.”
递归
List<String> l = new ArrayList<>();public List<String> restoreIpAddresses(String s) {if(s.length()<4 || s.length() > 12){return l;}//1 表示第几个网段 0表示从字符串s哪一位开始算 “”表示追加的IPdfs(s,1,0,"");return l;}private void dfs(String s, int part,int start, String temp) {if(part == 4){if(isIP(s.substring(start))){l.add(temp+s.substring(start));}return;}for (int i = 1; i < 4 && start+i<s.length(); i++) {String t = s.substring(start,start+i);if(isIP(t)){dfs(s,part+1,start+i,temp+t+".");}}}private static boolean isIP(String substring) {if (substring.length() > 3) {return false;}if (substring.startsWith("0")) {return "0".equals(substring);} else {return Integer.valueOf(substring) <= 255;}}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态