题目:
力扣:93. 复原 IP 地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/7b803b1296254a108f254418aa26bca5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU2VhbkxpdW8=,size_20,color_FFFFFF,t_70,g_se,x_16)
写法:暴力求解
代码:
public List<String> restoreIpAddresses(String s) {
//存放最后的输出结果
List<String> list=new ArrayList<String>();
//长度
int n=s.length();
//存放临时的
String[] strArr =new String[4];
if(n<4||n>12){
return list;
}else{
//用来存储可能出现的结果
for (int i = 1; i < 4; i++) {
if(n-i>9||n-i<3){
continue;
}
for (int j = 1; j < 4; j++) {
if(n-i-j>6||n-i-j<2){
continue;
}
for (int k = 1; k < 4; k++) {
if(n-i-j-k>0&&n-i-j-k<4){
int l=n-i-j-k;
String ss=s;//临时便利 保证每次用到的都是原字符串 s
int[] intArr={i,j,k,l};
for (int m = 0; m < strArr.length; m++) {
strArr[m]=ss.substring(0,intArr[m]);
ss=ss.substring(intArr[m]);
}
if(is_(strArr)){
String temporary="";
for (int m = 0; m < strArr.length-1; m++) {
temporary+=strArr[m]+".";
}
temporary+=strArr[strArr.length-1];
list.add(temporary);
}
}
}
}
}
}
return list;
}
// 判断格式是否正确
public static boolean is_(String [] strArr){
for (int i = 0; i < strArr.length; i++) {
if(strArr[i].length()==1){
continue;
}else if("0".equals(strArr[i].charAt(0)+"")||Integer.parseInt(strArr[i])>255){
return false;
}
}
return true;
}
测试:
public static void main(String[] args) {
System.out.println(restoreIpAddresses("25525511135"));
}
输出结果:
[255.255.11.135, 255.255.111.35]
题目地址:我是地址