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

数字字符串转化成IP地址

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


str1.str2.str3.str4 
str1的长度有1,2,3 三种选择
str2的长度有1,2,3 三种选择
str3的长度有1,2,3 三种选择

str1,str2,str3 选定之后,str4也就确定了。 
判断组合(str1,str2,str3,str4)是否满足要求

0<=str&&str<=255  
不能出现 00,01, 000,001等情况,即str长度大于1时,不能以0开头。
总共就27中组合,手撕也可行。


import java.util.ArrayList;
import java.util.HashSet;

public class Solution {


    public static void main(String[] args) {

        new Solution().restoreIpAddresses("25525522135");


    }


    /**
     * @param s string字符串
     * @return string字符串ArrayList
     */

    public ArrayList<String> restoreIpAddresses(String s) {
        // write code here


        String str1 = null;
        String str2 = null;
        String str3 = null;
        String str4 = null;

        ArrayList<String> itemList = new ArrayList<>(10);

        for (int a1 = 1; a1 < 4 && a1 < s.length(); a1++) {
            str1 = s.substring(0, a1);

            for (int a2 = 1; a2 < 4 && a1 + a2 < s.length(); a2++) {
                str2 = s.substring(a1, a1 + a2);

                for (int a3 = 1; a3 < 4 && a1 + a2 + a3 < s.length(); a3++) {
                    str3 = s.substring(a1 + a2, a1 + a2 + a3);
                    str4 = s.substring(a1 + a2 + a3);

                    String tmp = make(str1, str2, str3, str4);
                    if (tmp != null) {
                        itemList.add(tmp);
                    }
                }
            }

        }


        return itemList;
    }


    private String make(String str1, String str2, String str3, String str4) {

        if(str1.length()>1 && str1.charAt(0)=='0'){
            return null;
        }

        if(str2.length()>1 && str2.charAt(0)=='0'){
            return null;
        }

        if(str3.length()>1 && str3.charAt(0)=='0'){
            return null;
        }

        if(str4.length()>1 && str4.charAt(0)=='0'){
            return null;
        }


        if (Integer.parseInt(str1) <= 255 &&
                Integer.parseInt(str2) <= 255 &&
                Integer.parseInt(str3) <= 255 &&
                Integer.parseInt(str4) <= 255) {
					return str1 + "." + str2 + "." + str3  + "." + str4;
        }

        return null;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务