【LeetCode笔记】剑指 Offer 93. 复原 IP 地址(Java、DFS、字符串)
文章目录
- 题目描述
- 二刷
打卡第七天~
- 也是很常考的一道题了!
- 感觉和把数字翻译成字符串这道题很像,也都可以用 DFS 来做
题目描述
- 还是定义全局的 list,在 DFS 的过程不断维护 list
- 递归结束的情况:已经凑够四个数字(跑完了 string && 没跑完 string)
- 前导0:当前数字首位为0,直接凑上0并往下一个数字 DFS
- 其他DFS情况:最多3个数字,并且进行255的范围判断
class Solution {char[] arr;List<String> list = new ArrayList<>();public List<String> restoreIpAddresses(String s) {arr = s.toCharArray();dfs("", 0, 0);return list;}public void dfs(String pre, int integerNums, int start) {// 加了四个,并且跑完了 string 的情况if(start == arr.length) {if(integerNums == 4){list.add(pre.substring(0, pre.length() - 1));}return;}if(integerNums == 4) {return;}// 首位为0,直接冲(不能前导0)if(arr[start] == '0') {pre += '0';if(integerNums != 4) {pre += '.';}dfs(pre, integerNums + 1, start + 1);return;}// 首位不为0, 最多选三个int temp = 0;String tempIP = pre;for(int i = 0; i < 3 && start + i < arr.length; i++) {// 255 判断temp = temp * 10 + (arr[start + i] - '0');if(temp > 255) {break;}tempIP += arr[i + start];dfs(tempIP + '.', integerNums + 1, start + i + 1);}}
}
二刷
- 思路不难,但是条条框框写起来是真的麻烦。。
class Solution {List<String> ans = new LinkedList<>();char[] arr;public List<String> restoreIpAddresses(String s) {arr = s.toCharArray();dfs("", 0, 0);return ans;}void dfs(String s, int index, int pointCounts) {if(pointCounts > 0 && pointCounts < 4) {s += '.';}if(index == arr.length) {if(pointCounts == 4) {ans.add(s);}return;}if(pointCounts == 4) {return;}if(arr[index] == '0') {dfs(s + '0', index + 1, pointCounts + 1);}else {int num = 0;String tempIP = s;for(int i = 0; i < 3 && index + i < arr.length; i++) {num *= 10;num += arr[i + index] - '0';tempIP += arr[i + index];if(num <= 255) {dfs(tempIP, index + i + 1, pointCounts + 1);}}}}
}
【LeetCode笔记】剑指 Offer 93. 复原 IP 地址(Java、DFS、字符串)相关推荐
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...
- 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
<LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...
- 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java
<LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...
- 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java
<LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...
- 【LeetCode】剑指 Offer 59 - I. 滑动窗口的最大值
[LeetCode]剑指 Offer 59 - I. 滑动窗口的最大值 文章目录 [LeetCode]剑指 Offer 59 - I. 滑动窗口的最大值 package offer;import ja ...
- 【LeetCode】剑指 Offer 51. 数组中的逆序对
[LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...
- 【LeetCode】剑指 Offer 43. 1~n 整数中 1 出现的次数
[LeetCode]剑指 Offer 43. 1-n 整数中 1 出现的次数 文章目录 [LeetCode]剑指 Offer 43. 1-n 整数中 1 出现的次数 package offer;pub ...
- 【LeetCode】剑指 Offer 41. 数据流中的中位数
[LeetCode]剑指 Offer 41. 数据流中的中位数 文章目录 [LeetCode]剑指 Offer 41. 数据流中的中位数 package offer;import java.util. ...
- 【LeetCode】剑指 Offer 37. 序列化二叉树
[LeetCode]剑指 Offer 37. 序列化二叉树 文章目录 [LeetCode]剑指 Offer 37. 序列化二叉树 package offer;import java.util.Link ...
最新文章
- canvas上的像素操作(图像复制,细调)
- 从软件思想抽象出几条做事原则
- Tensorflow一些常用基本概念与函数(1)
- (转)ArcEngine读取数据(数据访问)
- 3164 质因数分解
- android 请求参数打印,android retrofit 请求参数格式RequestBody的方法
- 《ACM国际大学生程序设计竞赛题解Ⅰ》——模拟题
- Excel多因素不重复方差分析
- SQLServer LIKE 通配符
- 【逻辑与计算理论】Lambda 演算的类型与其 Lambda 演算建模
- CUDA并行计算 | CUDA算法效率提升关键点概述
- 代码质量 重构 代码鸡汤
- Auto.js 全命令整理(一) 数据获取专题
- Unity3D-射线效果
- Himall商城LinqHelper帮助类(1)
- 三菱plc恒压供水程序+威纶触摸屏程序本成已用于实际项目中
- 学习资料 AND ORR
- 吞剑!喷火!这种江湖卖艺套路能吸引观众吗?
- 2022茶艺师(初级)操作证考试题库及在线模拟考试
- 大众营销OUT,活跃科技教你玩精众营销
热门文章
- JDBC--Java Database Connectivity
- Leetcode--621. 任务调度器
- ns3 统计一个包所经历的时延_【直击UDE2020】显示链接的智慧生活,你我正在经历...
- 从‘一边拉琴,一边哭’,看什么是真正的兴趣
- Struts2基础知识(三)
- Java加密与解密的艺术~Provider
- mysql max字符串数值_针对字符串值的mysql:min()和max()。
- 大学计算机导论报告,大学计算机导论论文参考.docx
- 关于计算机知识竞答的问题,电脑知识竞赛题目有哪些
- Arduino PID自整定库