leetcode 93-Restore IP Addresses(medium)
Posted yshi12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 93-Restore IP Addresses(medium)相关的知识,希望对你有一定的参考价值。
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
Example:
Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]
IP address is consist of 4 parts with each part among (0,255)
so every part can be consist of 1, 2 or 3 digits, and the leading one shouldn‘t be zero.
cases:
1. already get 4 parts and index come to the end of the string, add string to the list and return;
2. s.charAt(index)==‘0‘, only one case is valid, that is, this part is "0";
3. iterate through index->index+1, index->index+2, index->index+3 digits, judge whether it is a valid part, if it is, add it to the string, and continue dbp.
class Solution { public List<String> restoreIpAddresses(String s) { List<String> list=new ArrayList<>(); if(s.length()<4) return list; findIP(s, list, "", 0, 0); return list; } public void findIP(String s, List<String> list, String str, int index, int part){ if(part==4||index==s.length()){ if(part==4&&index==s.length()) list.add(str.substring(1)); return; } if(s.charAt(index)==‘0‘){ findIP(s, list, str+".0", index+1, part+1); } else{ for(int i=1;i<4;i++){ if(index+i<=s.length()&&Integer.parseInt(s.substring(index,index+i))<256){ findIP(s,list, str+"."+s.substring(index,index+i),index+i, part+1); } } } } }
注意:所有需要取无论数组还是string的某几位的时候,都要注意是否会out of bound, for循环中的变量i往往不需要担心,主要对于while循环之类其他的地方自己定义的一个循环变量或者其他值加上循环变量后产生的新的量是否会超过bound,很容易忽视,一定要小心!截取或抽取的时候一定要考虑一下会不会超出范围。比如这道题先就忘了index+i会超出s范围。
以上是关于leetcode 93-Restore IP Addresses(medium)的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 93. Restore IP Addresses
[leetcode]93. Restore IP Addresses还原IP地址
LeetCode-93-Restore IP Addresses
LeetCode93. Restore IP Addresses 面试题