Leetcode: restore ipAddress 恢复ip地址,找出所有可能性
来源:互联网 发布:卡密软件下载 编辑:程序博客网 时间:2024/06/06 03:01
给出一个只包含数字的字符串,找出它所有可能的合法的IP地址。
比如给出 "25525511135",
那么就返回 ["255.255.11.135","255.255.111.35"]
解题的思路考虑的是backtrack回溯法,首先要有一个valid函数判断当前纳入的字符串是否符合ip的规范0-255之间,如果符合,继续寻找下一个,如果不符合的话,就需要返回到上一次的结果,再尝试另外的可能性。
vector<string> restoreIpAddresses(string s) { vector<string> result; int len = s.length(); if(index >= len) return; if(len > 12 || len < 4) return result; string tmp = ""; // start from the first one int num = 1; restore(s,0,num,result,tmp); } void restore(string s, int index, int num, vector<string>& result,string tmp) { int len = s.length(); if(num >= 4) { if(len - index <= 3 && len - index > 0) { int k = len - index; if(valid(s.substr(index,k))) { tmp += s.substr(index,k); result.push_back(tmp); } } else return; } else{ tmp += s.substr(index,1);//单个数字的情况 tmp += '.'; restore(s,index+1,num+1,result,tmp); tmp = tmp.substr(0,tmp.length()-2); if(s[index] != '0'){//两个数字 tmp += s.substr(index,2); tmp += '.'; restore(s,index+2,num+1,result,tmp); } tmp = tmp.substr(0,tmp.length()-3); string tmp1 = s.substr(index,3);//三个数字 if(tmp1.length() == 3 && valid(tmp1)) { tmp += s.substr(index,3); tmp += '.'; restore(s,index+3,num+1,result,tmp); tmp = tmp.substr(0,tmp.length()-4); } } } bool valid(string s) { if(s.length() == 2) { if(s[0] == '0') return false; else return true; } if(s.length() == 1) return true; int num = 0; for(int i = 0 ; i < 3; i++) num += (s[i] - '0')*pow(10,2-i); if(num <= 255 && num >= 100) return true; return false; }
- Leetcode: restore ipAddress 恢复ip地址,找出所有可能性
- LeetCode Restore IP Addresses 恢复IP地址
- LeetCode | Restore IP Addresses(恢复ip地址)
- [LeetCode] Restore IP from string 从字符串恢复IP地址
- LeetCode OJ 之 Restore IP Addresses(恢复IP地址)
- LeetCode 93. Restore IP Addresses(恢复IP地址)
- Leetcode 93. Restore IP Addresses IP地址恢复 解题报告
- Restore IP Addresses 恢复IP地址
- leetCode 93.Restore IP Addresses (恢复IP地址) 解题思路和方法
- Restore IP Addresses 还原IP地址@LeetCode
- DFS-lintcode恢复ip地址(Restore IP Addresses)
- leetcode:Restore IP Addresses (修复ip地址) 【面试算法题】
- LeetCode: Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- [LeetCode]Restore IP Addresses
- Leetcode Restore IP Address
- Leetcode: Restore IP Address
- JTable 保存单元格内容
- u-boot-1.1.6编译过程中出现cannot find -lc
- 数据库表的缓存
- bat脚本编写要点
- jsp:useBean用法
- Leetcode: restore ipAddress 恢复ip地址,找出所有可能性
- 使用Tiled制作cocosd-x地图
- UVA11396 Claw Decomposition
- mysql 数据库多表更新语句
- jsp页面显示List中对象的属性三种方法
- JQuery Mobile入门
- 黑马程序员java学习—接口和多态
- Java设计模式之简单工厂模式
- 【说明】新模板分成结算方法说明