93. Restore IP Addresses

文章目录

  • 1 题目理解
  • 2 回溯

1 题目理解

输入:字符串s
输出:可能的ip地址
规则:一个有效的ip地市是一连串数字,数字范围在0到255,每个数字不能有前导0。例如"0.1.2.201" and "192.168.1.1"是有效ip地址。"0.011.255.245"不是有效地址。“192.168.1.312” and "192.168@1.1"也不是有效地址。

Example 1:

Input: s = “25525511135”
Output: [“255.255.11.135”,“255.255.111.35”]
Example 2:

Input: s = “0000”
Output: [“0.0.0.0”]
Example 3:

Input: s = “1111”
Output: [“1.1.1.1”]
Example 4:

Input: s = “010010”
Output: [“0.10.0.10”,“0.100.1.0”]

2 回溯

依次处理字符串的每一位。例如s=“25525511135”。
例如处理第0个2:2是一个单独的值。
处理第1个5,可以是一个单独的值5,也可以和前面的2合起来组成25。
处理第2个5,可以是一个单独的值5,也可以和前面的25合起来组成255。

一般就是:
处理第n个字符,可以是一个单独的值value1,也可以和前面部分的值preValue组合成一个新的数值value2。

大致思路是这样的。在处理中会发现遇到0的情况。那就是preValue=0的时候,当前字符就不能和preValue组成新的值了。没有这个选项。

只有在生成的数字个数小于4个的时候,才可以形成单独形成一个值value1。

class Solution {private char[] chars;private List<String> result;public List<String> restoreIpAddresses(String s) {if(s==null || s.length()<4) return new ArrayList<String>();this.chars = s.toCharArray();result = new ArrayList<String>();dfs(0,0,0,new ArrayList<Integer>());return result;}private void dfs(int index,int preValue,int numberCount,List<Integer> values){if(index>=chars.length){if(numberCount==4){StringBuilder strb = new StringBuilder();strb.append(values.get(0));for(int i=1;i<values.size();i++){strb.append(".").append(values.get(i));}result.add(strb.toString());}return;}if(numberCount>4) return;int value = chars[index]-'0';//单独成为一个值if(numberCount<4) {values.add(value);dfs(index+1,value,numberCount+1,values);values.remove(values.size()-1);}//拼在前一个后面if(preValue>0){int newValue = preValue*10+value;if(newValue<=255){values.add(newValue);dfs(index+1,newValue,numberCount,values);values.remove(values.size()-1);}}}
}

时间复杂度O(4∗2n)O(4*2^n)O(42n) ,n是字符串长度。每一个字符都有2种选择。对于每一个结果要拼装回答案需要遍历数组,数组长度是4。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc学习(22):/textpath/*/helen

目录结构 web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xsi:schemaLocation"http://java.sun.com/xml…

131. Palindrome Partitioning

文章目录1 题目理解2 回溯3 动态规划1 题目理解 输入&#xff1a;字符串s 规则&#xff1a;将字符串s分割&#xff0c;分割后每一个部分都是一个回文串。 输出&#xff1a;所有的分割方式 Example 1: Input: s “aab” Output: [[“a”,“a”,“b”],[“aa”,“b”]] Examp…

4 文件操作 支持图片 视频 mp3 文本等

#文件操作:send_file,支持图片 视频 mp3 文本等app.route("/img")def img(): return send_file("1.jpg")转载于:https://www.cnblogs.com/ajaxa/p/11156483.html

我的博客开张了!!!

留个脚印,嘻嘻! 转载于:https://www.cnblogs.com/stu-acer/archive/2006/04/26/385453.html

第一百零五期:5年前,跳槽涨薪,你笑了,5年后,跳槽降薪,你慌了!

去年&#xff0c;我在年度绩效面谈中与某中年技术男就 “从测试转向产品经理” 的这个话题上进行了一些探讨与分析。 作者&#xff1a;王晔倞 图片来自 Pexels 或许是因为分析的角度比较客观、真实&#xff0c;再加上俩人都比较会演戏&#xff0c;我激情&#xff0c;他投入&a…

241. Different Ways to Add Parentheses

文章目录1 题目理解2 分治法1 题目理解 输入&#xff1a;字符串input&#xff0c;包含数字和操作符 规则&#xff1a;给input的不同位置加括号&#xff0c;使得input可以得到不同的计算结果。 输出&#xff1a;返回可能的计算结果 Example 1: Input: “2-1-1” Output: [0, 2…

第一百零六期:长相不讨AI喜欢面试就会挂?全球百万求职者经历AI“看脸”面试

AI不仅会筛选你的简历&#xff0c;还会通过看脸决定你能否通过面试。这不是将来时。全球已有超过一百万求职者&#xff0c;经历过AI面试官的冷酷“凝视”。 作者&#xff1a;鱼羊 本文经AI新媒体量子位&#xff08;公众号ID:QbitAI&#xff09;授权转载&#xff0c;转载请联系…

最近比较忙

最近项目真是忙的可以不过还好前几天没事搞了个电影小偷,闲下来看看电影真是不错站在这里要的回下就可以了http://www.ve99.com 转载于:https://www.cnblogs.com/flashicp/archive/2006/04/29/388972.html

服务器控件HtmlTable下控件赋值问题

在程序开发过程中&#xff0c;碰到这样的问题&#xff1a; 1<table>2<tr>3<td><asp:DropDownList iddropdownlist1 runatserver></td>4</tr>5</table>在基类页中有如下代码&#xff1a;1foreach(Control pagectl inPage.Controls[1]…

Foundry feats. MultiverseStudio

https://www.foundry.com/news-awards/foundry-jcube-announcement 经过这么多年的过程&#xff0c;本周本产品终于发布了PR&#xff0c;这次是由Foundry独家代理销售。 目前本产品已经在全球第一线的工作室的流程内使用&#xff0c;用来装配无法想象巨大的场景&#xff0c;如果…

842. Split Array into Fibonacci Sequence

文章目录1 题目理解2 回溯1 题目理解 输入&#xff1a;一个数字字符串S。例如S“123456579”。 规则&#xff1a;我们可以把这个字符串分割为菲波那切数列&#xff0c;例如&#xff1a;[123, 456, 579]。 一个菲波那切数列需要符合以下条件&#xff1a; 1 0<F[i]<231−1…

第一百零七期:她说,嫁人就选程序员!

又是一年双十一&#xff0c;单身狗们还好吗?想脱单?找个程序猿/程序媛是不错的选择&#xff0c;要不要了解一下? 作者&#xff1a;李二狗 图片来自 Pexels 程序员&#xff0c;已经渐渐成当代相亲市场的一只主力军。甚至可以说是“香饽饽”。 越来越多的妹子&#xff0c;在…

第一百零八期:比较容易理解的Hbase架构全解,10分钟学会,建议收藏

依然是Hadoop组件的讲解&#xff0c;今天说到HBase 架构&#xff0c;都是一字一句打出来的&#xff0c;希望各位转发加关注&#xff0c;会一直给大家写优质的内容。 作者&#xff1a;IT技术管理那些事儿 依然是Hadoop组件的讲解&#xff0c;今天说到HBase 架构&#xff0c;都…

Surface 系统恢复

Surface Pro 6超详细教程之下载Surface 系统恢复镜像并制作系统恢复U盘 https://www.jianshu.com/p/d1b41d913f91 怎样创建Windows 10系统恢复驱动器(U盘) https://jingyan.baidu.com/article/63f236286bd7c90208ab3dd7.html Surface Pro 6超详细教程之恢复Surface Pro6 window…

在Matlab2006a中如何创建.net组件

在Matlab2006a中如何创建.net组件 为了创建一个.NET组件&#xff0c;你必须首先写一个M-Code&#xff08;或者使用已存在的代码&#xff09;然后在MATLAB Builder for .NET中创建一个工程以打包这些代码. 1、编写、调试、保存Matlab代码以便作为.NET组件的基础 2、当你依然在Ma…

315. Count of Smaller Numbers After Self

文章目录1 题目理解2 暴力解法3 分治法1 题目理解 输入&#xff1a;int[] nums 输出&#xff1a;计数的数组int[] counts 规则&#xff1a;counts[i]表示nums中下标大于i&#xff0c;值小于nums[i]的个数 Example 1: Input: nums [5,2,6,1] Output: [2,1,1,0] Explanation: T…

SQL Server执行计划那些事儿(3)——书签查找

接下来的文章是记录自己曾经的盲点&#xff0c;同时也透漏了自己的发展历程&#xff08;可能发展也算不上&#xff0c;只能说是瞎混&#xff09;。当然&#xff0c;一些盲点也在工作和探究过程中慢慢有些眉目&#xff0c;现在也愿意发扬博客园的奉献精神&#xff0c;拿出来和大…

博客堂怎么连个搜索功能都没有

今天想去博客堂搜索下文章看看&#xff0c;结果找了半天&#xff0c;差点把显示器翻过来看也没找到个搜索的功能。是我真的没找到&#xff0c;还是博客堂觉的搜索功能没必要啊??? 转载于:https://www.cnblogs.com/BearsTaR/archive/2006/06/07/419837.html

1218. 最长定差子序列

文章目录1 题目理解2 开始思考1 题目理解 给你一个整数数组 arr 和一个整数 difference&#xff0c;请你找出并返回 arr 中最长等差子序列的长度&#xff0c;该子序列中相邻元素之间的差等于 difference 。 输入&#xff1a;整数数组arr&#xff0c; 整数difference 输出&…

第一百零九期:双十一光棍节调试一个商城必备功能,Java Springboot开源秒杀系统

秒杀系统在电商系统中是非常重要的&#xff0c;不是因为秒杀这个功能重要&#xff0c;而是因为秒杀提现的是一个系统的并发负载能力。例如阿里巴巴或者京东&#xff0c;每年的双十一的峰值&#xff0c;其实就是下一年的常态&#xff0c;双十一各项技术指标&#xff0c;已经作为…