Restore IP Addresses问题及解法
来源:互联网 发布:加内特体测数据 编辑:程序博客网 时间:2024/06/08 10:00
问题描述:
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
示例:
Given "25525511135"
,
return ["255.255.11.135", "255.255.111.35"]
. (Order does not matter)
确定是否能组成有效的ip地址,在不违反连续性的前提下,我们可以采取回溯方法,依次尝试选取一个或者两个或者三个字符组成的数来作为每个ip地址的四分之一。
过程详见代码:
class Solution {public: vector<string> restoreIpAddresses(string s) {vector<string> res;string ip="";bs(res, ip, 0, s, 0);return res;}void bs(vector<string>& res, string& ip, int start,string s,int n){if (ip.length() == s.length() + 4){string t = ip;t.pop_back();res.push_back(t);return;}else if (n >= 4) return;int i = start;int t; if(i < s.length()) { t = s[i] - '0'; ip.push_back(s[i]); ip.push_back('.'); bs(res, ip, i + 1, s,n + 1); ip.pop_back(); ip.pop_back(); }if (i + 1 < s.length()){ t = (s[i] - '0') * 10 + s[i + 1] - '0'; if(t >= 10) { ip.push_back(s[i]); ip.push_back(s[i + 1]); ip.push_back('.'); bs(res, ip, i + 2, s, n+ 1); ip.pop_back(); ip.pop_back(); ip.pop_back(); }}if (i + 2 < s.length()){ t = (s[i] - '0') * 10 + s[i + 1] - '0'; t = t * 10 + s[i + 2] - '0'; if(t >=100 && t <=255) { ip.push_back(s[i]); ip.push_back(s[i + 1]); ip.push_back(s[i + 2]); ip.push_back('.'); bs(res, ip, i + 3, s, n + 1); ip.pop_back(); ip.pop_back(); ip.pop_back(); ip.pop_back(); } }}};
阅读全文
0 0
- Restore IP Addresses问题及解法
- LeetCode: Restore IP Addresses
- Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- Restore IP Addresses
- [LeetCode]Restore IP Addresses
- Restore IP Addresses
- Restore IP Addresses
- LeetCode:Restore IP Addresses
- Restore IP Addresses
- Restore IP Addresses
- LeetCode Restore IP Addresses
- [leetcode] Restore IP Addresses
- Restore IP Addresses
- LeetCode:Restore IP Addresses
- [LeetCode] Restore IP Addresses
- LeetCode - Restore IP Addresses
- Wireless Network(POJ
- [PKU暑课笔记] 趁机膜一发线段树和树状数组
- Binary Tree Serialization
- C# AES 加密解密
- linux python2.6 Redis报错
- Restore IP Addresses问题及解法
- fullcalendar日历控件知识点集合
- 在vbox安装Kali 2017.1
- python 截取文件和文件名
- Java8系列--Java Stream进阶篇(收集器简介)
- ESP8266http工作队列的实现方法
- Androidstudio配置一
- Codeforces
- Vue2.0-上篇