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

一个ip组有四组,每一组可以选1到3个数。第一组先选一个数,剩下给后面选,每次记录下组的字符串下标。递归+回溯

import java.util.*;


public class Solution {
    /**
     *
     * @param s string字符串
     * @return string字符串ArrayList
     */
    public ArrayList<String> restoreIpAddresses (String s) {
        // write code here
        ArrayList<String> result = new ArrayList<>();
        dfs(0, 0, new StringBuilder(), result, s);
        return result;
    }
    //index : 每一组开头的下标
    private void dfs(int index, int depth, StringBuilder ip,
                     ArrayList<String> result, String s) {
        int length = ip.length();
        if (index== s.length() && depth == 4) {
            ip.deleteCharAt(length - 1);
            result.add(ip.toString());
            return;
        }
        for(int i = 1 ;i <= 3;i++){
            //边界 下标超出字符串长度
            if(i + index > s.length()){
                break;
            }
            int num = Integer.parseInt(s.substring(index, index + i));
            
            if(num > 255 || String.valueOf(num).length() != i){
                continue;
            }
            
            ip.append(num).append(".");
            dfs(index + i, depth + 1, ip ,result, s);
            ip.setLength(length);
        }
    }

}
全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
在改简历的大卫很认真:天天有面试 = 你已经在 offer 门口了。 海投能面成这样,说明你的简历、基础、学历都是过关的,缺的只是一次刚好匹配的缘分。 关于你说的 SQL 恐惧,我帮你捋一下: - 面试里考来考去,真就那几类: 分组、去重、关联、子查询、窗口函数(row_number、rank、sum 开窗) ​ - 面试官要的不是“写得花里胡哨”,而是思路稳、不出错。 你恐惧的本质不是不会, 是怕临场卡壳、怕写错、怕被追问。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务