NC20 数字字符串转化成IP地址
93. 复原 IP 地址
描述
现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。
例如:
给出的字符串为"25525522135",
返回[“255.255.22.135”, “255.255.221.35”]. (顺序没有关系)
分析
- 使用递归的方式,切分字符串s,每次递归里面,有三次切分,分别切长度是1,2,3的字符串。
- 一个合格ip地址,应该是
- 能够不多不少的切分掉字符串s;
- 每一个分块里面没有前导0,且不小于0,不大于255
注意集合li只存储截取的字符串,我觉的不要添加".",在加入res的时候可以再去添加"."
- 递归函数参数
需要变量start作为起始下标,方便每次截取s的子字符串 - 终止条件
当集合li的size等于4且start指向s.length,说明之前的递归已经把字符串s切分成四个符合要求的子字符串。 - 单层遍历
以start为起始下标,截取长度分别是1,2,3的字符串,判断是否满足要求。
class Solution {
List<String> res = new ArrayList<>();
List<String> li = new ArrayList<>();
public List<String> restoreIpAddresses(String s) {
backTracking(s,0);
return res;
}
public void backTracking(String s, int start){
if(li.size() == 4 && start == s.length()){
res.add(li.get(0)+"."+li.