当前位置: 首页 > news >正文

5118网站的功能广州seo网站

5118网站的功能,广州seo网站,好的网站建设网站,安徽鲲鹏建设集团有限公司网站今天是第24天刷leetcode,立个flag,打卡60天。 算法挑战链接 93. 复原 IP 地址https://leetcode.cn/problems/restore-ip-addresses/ 第一想法 题目理解:将一串数字字符串变成正确的ip格式的字符串。 这类题目是切分字符串,ip一…

今天是第24天刷leetcode,立个flag,打卡60天。

算法挑战链接

93. 复原 IP 地址icon-default.png?t=N6B9https://leetcode.cn/problems/restore-ip-addresses/

第一想法

题目理解:将一串数字字符串变成正确的ip格式的字符串。

这类题目是切分字符串,ip一共有四组,所以是切分三次。

切分字符串的方法第一想到的就是回溯算法。那么使用回溯算法我们也可以和递归那样分三步走

第一步:确定入参和返回值

void backtracking3(String s, List<String> result);
回溯算法的返回值一般都是void
入参不确定可以先做后面的,使用的时候发现没有就可以确定为入参了

第二步:确定终止条件

        if (array.length == 4) {//判断是否是一个正缺的ipif (isIp(array[3])) {result.add(s);}return;}很明显的终止条件,字符串被切割成四份,且每一份都在0-255范围内

第三步:在当前的操作

        String tmp = array[array.length - 1];for (int i = 0; i < tmp.length() - 1; i++) {String lastString = tmp.substring(i + 1);String preString = tmp.substring(0, i + 1);String newString = combineString(array, preString, lastString);backtracking3(newString, result);}
找到最后一份,不断的切分,比如111, 会根据1.11、11.1 这样来切分

在回溯算法中是可以考虑剪枝的。

        for (int i = 0; i < array.length - 1; i++) {if (! isIp(array[i])) return;}
如果前面的数字不符合ip的规范,那么后面就没有必要在进行递归了

 因此完成的代码如下:

class Solution {public List<String> restoreIpAddresses(String s) {List<String> result = new ArrayList<>();if (s.length() > 12) return result;backtracking3(s, result);return result;}void backtracking3(String s, List<String> result) {String[] array = s.split("\\.");for (int i = 0; i < array.length - 1; i++) {if (! isIp(array[i])) return;}if (array.length == 4) {//判断是否是一个正缺的ipif (isIp(array[3])) {result.add(s);}return;}String tmp = array[array.length - 1];for (int i = 0; i < tmp.length() - 1; i++) {String lastString = tmp.substring(i + 1);String preString = tmp.substring(0, i + 1);String newString = combineString(array, preString, lastString);backtracking3(newString, result);}}private static boolean isIp(String s) {if (s.startsWith("0") && s.length() > 1) return false;long currentNum = Long.parseLong(s);return currentNum >= 0 && currentNum <= 255;}private String combineString(String[] array, String preString, String lastString) {StringBuilder sb = new StringBuilder();for (int i = 0; i < array.length - 1; i++) {sb.append(array[i]).append(".");}sb.append(preString).append(".").append(lastString);return sb.toString();}
}

实现过程中遇到哪些困难 

实现过程中遇到的困难有

  1. 错误判断 0开头的也算符合,如032
  2. 错误判断 0不符合Ip规则,如 0.0.0.0
  3. 在进行字符串转换数字的时候,没有考虑到较大的数,使用了Integer.parseInt方法,报错了。
  4. 没有对字符串做过滤,导致 long.parseLong方法报错, 如999999999999999999

今日收获

       做题的时候应该需要看一下是否需要前置性做校验。

http://www.15wanjia.com/news/19995.html

相关文章:

  • 电子商城网站的设计与实现企业网站源码
  • 杭州萧山网站建设关键字挖掘
  • 在中国建设工程造价管理协会网站全网线报 实时更新
  • 保定企业建网站奶茶店营销软文
  • 俄文网站建设方案qq群推广链接
  • 在农村开个网站要多少钱合肥seo关键词排名
  • 做网站域名要自己注册吗提升seo排名
  • 广州seo优化电话重庆网站seo公司
  • 中国最大的网站制作公司百度安装到桌面
  • 什么网站可以做告白的网页北京网站推广排名
  • 佛山免费网站制作台湾搜索引擎
  • 建设通怎么样性价比高的seo网站优化
  • 运城哪家做网站的公司好百度seo优化推广
  • 如何用电脑记事本做网站seo创业
  • 深圳做网站网络营销公司山西seo优化公司
  • 北京做网络优化的公司seo优化网站百度技术
  • 济南做网站的公司能让手机流畅到爆的软件
  • 海阳市住房和城乡建设局官方网站视频互联网推广选择隐迅推
  • 做公司网站都需要什么资料百度售后电话人工服务
  • 中国10大品牌装修公司上海seo推广服务
  • 长沙企业网站建设公网站免费建站app
  • 安徽房地产网站建设百度指数批量查询
  • html前端网站开发PPT网络营销软件排行
  • wordpress在线阅读pdf网站优化排名技巧
  • 领域网站建设seo外包推广
  • 怎么在ps做网站首页建立网站需要什么
  • 网站无法添加图片百度推广助手官方下载
  • 网站建设企业推荐广西网站建设制作
  • 多备份 wordpress网站内容seo
  • 什么是网站建设需求谷歌搜索引擎入口2022