题解 | 数字字符串转化成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> asList = new ArrayList<String>();
if (s == null || s.length() == 0 || s.length() < 4) {
return asList;
}
getIpAddress(s, asList, "");
return asList;
}
public void getIpAddress(String s, ArrayList<String> asList, String string) {
String[] strs = string.split("\\.");
if (s.length() == 0 && strs.length == 4) {
asList.add(new String(string.substring(0, string.length() - 1)));
return;
}
if (strs.length > 4 || s.length() == 0) return;
for (int m = 1; m < 4; m++) {
if (m > s.length()) break;
string = string + s.substring(0, m) + ".";
int val = Integer.parseInt(s.substring(0, m));
if (val < 0 || val > 255) continue;
if(val == 0){
if(!Objects.equals(s.substring(0, m),"0")) continue;
}else{
if(Objects.equals(s.substring(0,m).substring(0,1),"0")) continue;
}
String s1 = s.substring(m);
getIpAddress(s1, asList, string);
string = string.substring(0,string.length() - m - 1);
}
}
}
