首页 > 代码库 > 【LeetCode】Restore IP Addresses 解题报告
【LeetCode】Restore IP Addresses 解题报告
【题目】
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)
题意:把一段字符串转换为所有可能的ip地址。
思路:回溯。
详见代码中注释:
public class Solution { List<String> ans = new ArrayList<String>(); public List<String> restoreIpAddresses(String s) { backTracking(s, 0, ""); return ans; } //left表示剩下未识别的字符串,cur表示当前已经识别的字符串 //n表示当前要识别的是ip的第几段,从0到3 public void backTracking(String left, int n, String cur) { //位数不符,直接pass int len = left.length(); if (len < 4 - n || len > 3 * (4 - n)) return; //识别到最后一段时,如果符合,添加到结果集 if (n == 3) { if (left.length() > 1 && left.charAt(0) == '0') return; //防止“010”这种情况 int last = Integer.valueOf(left); if (last >= 0 && last <= 255) { cur += left; ans.add(cur); } } //识别ip的前三段,可能是1位、2位、3位 for (int i = 1; i < 4 && i < left.length(); i++) { String str = left.substring(0, i); if (str.length() > 1 && str.charAt(0) == '0') return; //防止“010”这种情况 int t = Integer.valueOf(str); if (t >= 0 && t <= 255) { String next = cur + str + "."; backTracking(left.substring(i), n + 1, next); } } } }
【LeetCode】Restore IP Addresses 解题报告
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。