题解 | #数字字符串转化成IP地址#

数字字符串转化成IP地址

https://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串ArrayList
     */
    public ArrayList<String> restoreIpAddresses (String s) {
        // write code here
        ArrayList<String> res = new ArrayList<>();
        dfs(s,res,0,0);
        return res;
    }

    // 记录IP字符串
    private String nums = "";

    // 递归寻找,step表示ip的第几个点,index表示字符串下标索引
    public void dfs(String s,ArrayList<String> res,int step,int index){
        // 当前分割出的字符串
        String cur = "";
        if(step == 4){
            if(index != s.length()){
                return;
            }
            res.add(nums);
        }else{
            // 最长遍历3位
            for(int i = index;i < index + 3 && i < s.length();i++){
                cur += s.charAt(i);
                // 转数字比较
                int num = Integer.parseInt(cur);
                String temp = nums;
                // 不能超过255且不能有前导0
                if(num <= 255 && (cur.length() == 1 || cur.charAt(0) != '0')){
                    // 添加点
                    if(step < 3){
                        nums += cur + ".";
                    }else{
                        nums += cur;
                    }
                    // 递归查找下一个数字
                    dfs(s,res,step + 1,i + 1);
                    // 回溯
                    nums = temp;
                }
            }
        }
    }
}

全部评论

相关推荐

群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务