package com.netease.yunyin; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class SplitIp { public static void main(String[] args) { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); try { String input=br.readLine(); String ip=""; split(0, input.length(), input, ip); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //划分函数 static void split(int start,int length,String input,String ip){ //回溯时重新赋值 String back=ip; for(int i=1;i<4&&(start+i)<=length;i++){ //回溯 ip=back; //判断每一字节是否符合规范 String a=input.substring(start, start+i); if(isValidIp(a)) { //符合规范加上 ip+=a; //判断是否达到了四个字符:0.0.0.0 String[] strings = ip.split("\\."); //输出 if(strings.length==4&&(start+i)==length){System.out.println(ip);return;} //加上.号递归 ip+="."; split(start+i, length,input, ip); } } } //判断是否为ip地址 public static boolean isValidIp(String subIp) { //如果第一个字符为0,则一定为0 if (subIp.charAt(0) == '0') return subIp.equals("0"); //0<subIp<=255 int num = Integer.parseInt(subIp); if (num <= 255 && num > 0) return true; else return false; } } /*//划分函数 static void split(int start,int length,String s,String ip){ //回溯时重新赋值 String back=ip; for(int i=1;i<4;i++){ ip=back; //如果长度到了输入字符串的长度就可以输出了 if((start+i)==length){ //判断是否符合ip地址规范 String a=s.substring(start, length); if(!isValidIp(a))return; //符合则加上 ip+=a; String[] strings = ip.split("\\."); //判断是否达到了四个字符:0.0.0.0 if(strings.length==4)System.out.println(ip); return; }else if((start+i)>length) return; String a=s.substring(start, start+i); if(!isValidIp(a))return; else{ //接着递归 ip+=a+"."; String[] strings = ip.split("\\."); if(strings.length>=5){return;} split(start+i, length, s, ip); } } }*/