题解 | #数字字符串转化成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> result = new ArrayList<>();
        StringBuffer ip = new StringBuffer();
        backtrack(s, 0, ip, 0, result);
        return result;
    }
    public void backtrack(String s, int start, StringBuffer ip, int segments,
                          ArrayList<String> result) {
        if (start == s.length() && segments == 4) {
            result.add(ip.toString());
            return;
        }
        else if (start == s.length() || segments == 4) {
            return;
        }

        for (int i = 1; i <= 3 && start + i <= s.length(); i++) {
            String segment = s.substring(start, start + i);
            if (isValidSegment(segment)) {
                if (segments > 0) {
                    ip.append('.');
                }
                ip.append(segment);
                
                backtrack(s, start + i, ip, segments + 1, result);
                ip.setLength(ip.length() - segment.length() - (segments > 0 ? 1 : 0));
            }
        }
    }
    public boolean isValidSegment(String segment) {
        if (segment.length() > 1 && segment.charAt(0) == '0') {
            return false;
        }
        int num = Integer.parseInt(segment);
        return num > -1 && num < 256;
    }
}

全部评论

相关推荐

02-16 22:13
门头沟学院 Java
Yki_:女生学成这样挺不错了,现在停止网课,立刻all in八股,从最频繁的开始背,遇到不会的知识点直接问AI,项目也别手敲,直接看技术文档,背别人总结好的面试官可能问的问题的答案,遇到不会的再去代码里找具体实现就可以了,3月份开始边背边投实习约面
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务