leetcode 93. Restore IP Addresses DFS深度优先遍历
来源:互联网 发布:淘宝自动回复设置技巧 编辑:程序博客网 时间:2024/06/05 17:58
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given “25525511135”,
return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)
这道题就是识别所有的合理IP地址,和 leetcode 91. Decode Ways DP动态规划+DFS深度优先遍历一模一样,是一个典型的DFS深度优先遍历问题。
代码如下:
import java.util.ArrayList;import java.util.List;public class Solution { //深度优先遍历,DFS即可实现 List<String> res=new ArrayList<String>(); public List<String> restoreIpAddresses(String s) { //特殊情况处理 if(s==null || s.length()<=0 || s.length()<4 || s.length()>12) return res; String one=""; byDFS(s,0,0,one); return res; } //index 记录开始的位置,k记录截取的数量, void byDFS(String s, int index,int k,String one) { if(k==3) { String tmp = s.substring(index, s.length()); if(check(tmp)) res.add(one+tmp); return ; }else { //每一次最长的截取长度是i,最短1位,最长3位 for(int i=1;i<=3 && index+i < s.length() ;i++) { String tmp = s.substring(index, index+i); if(check(tmp)) byDFS(s, index+i, k+1, one+tmp+"."); } } } public boolean check(String ip) { //以0开始的字符串,只有0是合理的,其余的比如001等等都不是合理的 if(ip.charAt(0)=='0') { if(ip.equals("0")) return true; else return false; }else { int ipNum=Integer.parseInt(ip); if(ipNum>0 && ipNum<=255) return true; else return false; } }}
下面是C++的做法,和上一道题一样,是很简单的DFS深度优先遍历的做法
代码如下:
#include <iostream>#include <algorithm>#include <vector>#include <sstream>#include <stack>using namespace std;class Solution {public: vector<string> res; vector<string> restoreIpAddresses(string s) { if (s.length() <= 3) return res; string one = ""; byDFS(s,0, 0, one); return res; } void byDFS(string s, int index, int k, string one) { if (k==3) { string tmp = s.substr(index); if (isVaild(tmp)) res.push_back(one + tmp); return; } else { for (int len = 1; len <= 3 && len+index<s.length(); len++) { string tmp = s.substr(index, len); if (isVaild(tmp)) byDFS(s,index+len,k+1,one+tmp+"."); } } } bool isVaild(string s) { if (s[0] == '0') { if (s == "0") return true; else return false; } else { stringstream ss; ss << s; int num; ss >> num; if (num > 0 && num <= 255) return true; else return false; } }};
阅读全文
0 0
- leetcode 93. Restore IP Addresses DFS深度优先遍历
- leetcode---restore-ip-addresses---dfs
- 93.leetcode Restore IP Addresses(medium)[回溯 DFS]
- leetcode -- Restore IP Addresses -- 重点,dfs
- LeetCode 93. Restore IP Addresses
- [Leetcode] 93. Restore IP Addresses
- LeetCode --- 93. Restore IP Addresses
- [LeetCode]93.Restore IP Addresses
- Leetcode 93.Restore IP Addresses
- [leetcode] 93.Restore IP Addresses
- [leetcode] 93.Restore IP Addresses
- 93. Restore IP Addresses LeetCode
- leetcode 93. Restore IP Addresses
- Leetcode 93. Restore IP Addresses
- LeetCode 93. Restore IP Addresses
- LeetCode *** 93. Restore IP Addresses
- leetcode 93. Restore IP Addresses
- LeetCode-93.Restore IP Addresses
- android adb 捕获屏幕截图的命令
- Python操作文件和目录
- js中递归实现的方法及其区别
- 【错误解决】Spring JPA的错误及其解决方案
- Android Framebuffer介绍及使用
- leetcode 93. Restore IP Addresses DFS深度优先遍历
- 程序20
- python操作数据库
- IE浏览器兼容background-size属性
- Java基础知识_毕向东_Java基础视频教程笔记(26 反射)
- tcp/ip
- 【JAVA并发学习四】volatile分析
- 2017 我用 5 个月分享了 98 篇优秀博文
- mysql 1055的解决方案