题解 | #连续子数组的最大和#
数字字符串转化成IP地址
http://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e
暴力解法三次for循环,每次截取字符串转为int判断在不在0-255之间,若字符串长度大于1,那么字符串第一位不能是0
public class Solution {
/**
*
* @param s string字符串
* @return string字符串ArrayList
*/
public ArrayList<String> restoreIpAddresses (String s) {
ArrayList<String> arr = new ArrayList<String>();
if(s.length()<4||s.length()>12){
return arr;
}
for(int i=1;i<s.length()-2;i++){
for(int j=i+1;j<s.length()-1;j++){
for(int k=j+1;k<s.length();k++){
if(check(s,i,j,k)){
String result = s.substring(0,i)+"."+s.substring(i,j)+"."
+s.substring(j,k)+"."+s.substring(k);
arr.add(result);
}
}
}
}
return arr;
}
public Boolean check(String s,int i,int j,int k){
String s1 = s.substring(0,i);
if(Integer.parseInt(s1)<0||Integer.parseInt(s1)>255){
return false;
}
if(s1.length()>1&&s1.charAt(0)=='0'){
return false;
}
String s2 = s.substring(i,j);
if(Integer.parseInt(s2)<0||Integer.parseInt(s2)>255){
return false;
}
if(s2.length()>1&&s2.charAt(0)=='0'){
return false;
}
String s3 = s.substring(j,k);
if(Integer.parseInt(s3)<0||Integer.parseInt(s3)>255){
return false;
}
if(s3.length()>1&&s3.charAt(0)=='0'){
return false;
}
String s4 = s.substring(k);
if(Integer.parseInt(s4)<0||Integer.parseInt(s4)>255){
return false;
}
if(s4.length()>1&&s4.charAt(0)=='0'){
return false;
}
return true;
}
}