Restore IP Addresses leetcode java
題目:
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given "25525511135",
return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)
?
題解:
利用循環(huán)遞歸解決子問(wèn)題。對(duì)于每個(gè)段內(nèi)數(shù)來(lái)說(shuō),最多3位最少1位,所以在每一層可以循環(huán)3次,來(lái)嘗試填段。因?yàn)镮P地址最多4個(gè)分段,當(dāng)層數(shù)是3的時(shí)候說(shuō)明已經(jīng)嘗試填過(guò)3個(gè)段了,那么把剩余沒(méi)填的數(shù)段接到結(jié)尾即可。
這個(gè)過(guò)程中要保證的是填的數(shù)是合法的,最后拼接的剩余的數(shù)也是合法的。
?注意開(kāi)頭如果是0的話(huà)要特殊處理,如果開(kāi)頭是0,判斷整個(gè)串是不是0,不是的話(huà)該字符就是非法的。因?yàn)?01,01都是不對(duì)的。
代碼如下:
?1?????public?ArrayList<String>?restoreIpAddresses(String?s)?{???2?????????ArrayList<String>?res?=?new?ArrayList<String>();??
?3?????????String?item?=?new?String();
?4?????????if?(s.length()<4||s.length()>12)?
?5?????????return?res;??
?6?????????
?7?????????dfs(s,?0,?item,?res);??
?8?????????return?res;??
?9?????}??
10???????
11?????public?void?dfs(String?s,?int?start,?String?item,?ArrayList<String>?res){??
12?????????if?(start?==?3?&&?isValid(s))?{??
13?????????????res.add(item?+?s);??
14?????????????return;??
15?????????}??
16?????????for(int?i=0;?i<3?&&?i<s.length()-1;?i++){??
17?????????????String?substr?=?s.substring(0,i+1);??
18?????????????if?(isValid(substr))
19?????????????????dfs(s.substring(i+1,?s.length()),?start+1,?item?+?substr?+?'.',?res);??
20?????????}??
21?????}??
22???????
23?????public?boolean?isValid(String?s){??
24?????????if?(s.charAt(0)=='0')
25?????????????return?s.equals("0");??
26?????????????int?num?=?Integer.parseInt(s);
27?????????????
28?????????if(num?<=?255?&&?num?>?0)
29?????????????return?true;
30?????????else
31?????????????return?false;
32?????}?
?Refrence:http://blog.csdn.net/u011095253/article/details/9158449
?
轉(zhuǎn)載于:https://www.cnblogs.com/springfor/p/3886409.html
總結(jié)
以上是生活随笔為你收集整理的Restore IP Addresses leetcode java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SharePoint 2010、201
- 下一篇: ASIHTTPRequest的环境配置和