leetcode -93 -复原IP地址 -java版

文章目录

    • 题目
    • 代码

题目

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。

示例:

输入: “25525511135”
输出: [“255.255.11.135”, “255.255.111.35”]

代码

/*
 * @lc app=leetcode.cn id=93 lang=java
 *
 * [93] 复原IP地址
 */

// @lc code=start
class Solution {
    private List res;
    public List restoreIpAddresses(String s) {
        res = new ArrayList<>();
        if(s.length()>12||s.length()<4)
            return res;
        Stack tmp = new Stack<>();
        process(s,tmp,0);
        return res;
    }
    private void process(String s,Stack tmp,int count)
    {
        if(count==4&&s.length()!=0)
            return;
        if(count==4&&s.length()==0)
        {
            String a = "";
            for(int i=0;i<4;i++)
            {
                a+=i!=3? tmp.get(i)+".":tmp.get(i);
            }
            res.add(a);
            return;
        }
        if(s.length()<4-count||s.length()>12-3*count)
            return;
        for(int i=1;i<=3;++i)
        {
            if(i>s.length())
                break;
            String subStr = s.substring(0,i);
            if(cut(subStr))
            {
                tmp.add(subStr);
                String rightStr = s.substring(i);

                process(rightStr,tmp,count+1);
                tmp.pop();
            }
        }
    }
    private boolean cut(String s)
    {
        if(s.charAt(0)=='0'&&s.length()>1)
            return false;
        int num = Integer.parseInt(s);
        if(0<=num&&num<=255)
            return true;
        else return false;
    }
}
// @lc code=end


你可能感兴趣的:(leetcode刷题)