算法训练: Restore IP Addresses
来源:互联网 发布:sql新增字段语句 编辑:程序博客网 时间:2024/04/29 13:26
题目链接:https://leetcode.com/problems/restore-ip-addresses/?tab=Description
题目描述:
给一个只包含数字的字符串,要求返回所有合法的IP地址。
例: 给定字符串为 "25525511135" ,需要返回["255.255.11.135", "255.255.111.35"](顺序无关)
解题思路:
采用一种深度优先遍历的思想,得到所有的组合。
对于给定的字符串,每次取字符的一个、两个或者三个字符串,f转换成整型(“255”变为255),判断该整型值是否在小于256,
若是,对剩下的字符串采用同样的方法进行遍历,直到遍历到字符串的最后并且符合合法IP地址的形式,则返回,如果该整型值大
于256,则跳过该种情况。
legalIP的参数:s表示输入的字符串,startindex表示每段遍历的起始地址,step合法IP地址遍历次数,等于4则表示遍历结束,
currenip表示当前遍历时IP地址,res为保存合法IP地址的数组。
void legalIP(string s, int startindex, int step, string currentip, vector<string>&res){ int len=s.size(); int sum=0; //判断字符串的长度是否合法 if((len-startindex)>(12-step*3)) return; if((len-startindex)<(4-step)) return; //判断字符串的长度合法,且遍历到了最后,得到一个合法IP地址 if(len==startindex&&step==4){ res.push_back(currentip); return; } //以三个字符为一组,如果小于256,则参与递归 for(int i=startindex; i<startindex+3 && i<len; i++){ sum=sum*10+s[i]-'0'; if(sum<=255){ currentip=currentip+s[i]; if(i<len-1) legalIP(s, i+1, step+1, currentip+'.',res); else legalIP(s, i+1, step+1, currentip,res);//遍历到最后,不加'.' } else return;//大于255即结束遍历返回 if(sum==0) return;//避免前缀为0 } } vector<string> restoreIpAddresses(string s) { vector<string> result; string currentip; legalIP(s,0,0,currentip,result); return result; }
结果:
Your Input
"322000"
Your answer
["3.2.200.0","3.220.0.0","32.20.0.0"]
Expected answer
["3.2.200.0","3.220.0.0","32.20.0.0"]
0 0
- 算法训练: Restore IP Addresses
- 93. Restore IP Addresses 回溯算法
- 算法作业HW9:LeetCode93 Restore IP Addresses
- 算法系列——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
- 高速公路、铁路交通的常识
- android与js交互,以及webview漏洞修复问题
- DOS命令(批处理命令)选项(choice)处理
- 移动端webapp自适应布局
- 归纳一些性能优化的方法
- 算法训练: Restore IP Addresses
- iOS SDAutoLayout布局体验(1)
- iOS_使用NSURLSessionDataDelegate的代理方法下载数据
- 如何阅读spring源码
- EF DataBase First 动态拼接数据库连接
- Scheduling R scripts and processes on Windows and Unix/Linux
- 十年之后,重回csdn
- Android程序员--常用网站链接
- 微信小程序之自定义toast实例 —— 微信小程序实战系列(6)