[LeetCode] Restore IP from string 从字符串恢复IP地址
2014-12-07 13:43
429 查看
Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given
return
思路:用递归的方法。IP地址是点分十进制,一共有4个part,每个part大于等于0,小于等于255。递归时,要传递part number,当part number等于4的时候,说明IP地址恢复完成。另外,要注意,每个part的范围必须是在[ 0, 255 ]内,而且要避免出现以0开头的part,比如010是没有意思的,“0.10.010.1”。
代码如下:
"25525511135",
return
["255.255.11.135", "255.255.111.35"]. (Order does not matter)
思路:用递归的方法。IP地址是点分十进制,一共有4个part,每个part大于等于0,小于等于255。递归时,要传递part number,当part number等于4的时候,说明IP地址恢复完成。另外,要注意,每个part的范围必须是在[ 0, 255 ]内,而且要避免出现以0开头的part,比如010是没有意思的,“0.10.010.1”。
代码如下:
vector<string> restoreIpAddresses(string s) { // main function vector<string> col; string ip; partitionIP(s, 0, 0, ip, col); return col; } void partitionIP(string s, int startIndex, int partNum, string resultIp, vector<string>& col) {// utility function //max 3 bits per partition if(s.size() - startIndex > (4-partNum)*3) return; //min 1 bit per partition if(s.size() - startIndex < (4-partNum)) return; if(startIndex == s.size() && partNum ==4) { resultIp.resize(resultIp.size()-1); col.push_back(resultIp); return; } int num =0; for(int i = startIndex; i< startIndex +3; i++) { num = num*10 + (s[i]-'0'); if(num<=255) { resultIp+=s[i]; partitionIP(s, i+1, partNum+1, resultIp+'.', col); } if(num ==0)//0.0.0.0 valid, but need to avoid 0.1.010.01 { break; } } }
相关文章推荐
- LeetCode-Restore IP Addresses-恢复IP地址-DP优化
- LeetCode | Restore IP Addresses(恢复ip地址)
- LeetCode Restore IP Addresses 恢复IP地址
- LeetCode—String数字字符串中寻找ip地址
- 【leetcode】String——Restore IP Addresses (93)
- leetcode 423. Reconstruct Original Digits from English 乱序英文字符串恢复数字 + 发现规律
- Leetcode: restore ipAddress 恢复ip地址,找出所有可能性
- LeetCode之“字符串”:Restore IP Addresses
- [LeetCode] Restore IP Addresses 复原IP地址
- Restore IP Addresses,将字符串转换成ip地址
- leetCode 93.Restore IP Addresses (恢复IP地址) 解题思路和方法
- [LeetCode] Construct Binary Tree from String 从字符串创建二叉树
- [LeetCode] Construct String from Binary Tree 根据二叉树创建字符串
- 【LeetCode91-100】编码种数,逆转单链表,IP地址转化,中序遍历二叉树,生成二叉搜索树,计算二叉树个数,交叉string【hard】,判断二叉搜索树是否合法,恢复二叉树(有两个元素被交换)
- LeetCode 93. Restore IP Addresses(恢复IP地址)
- LeetCode OJ 之 Restore IP Addresses(恢复IP地址)
- DFS-lintcode恢复ip地址(Restore IP Addresses)
- leetcode:Restore IP Addresses (修复ip地址) 【面试算法题】
- leetcode--Restore IP Addresses
- [leetcode] Restore IP Addresses