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

聊城做网站比较不错的公司济宁网站建设

聊城做网站比较不错的公司,济宁网站建设,网站flash代码,b2b网站建设方案长沙今天是第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.ds6.com.cn/news/92577.html

相关文章:

  • 全平台开发网站及app百度网站官网
  • 秦皇岛网站建设公司网站维护的内容有哪些
  • 临沂哪家做网站最好网易搜索引擎
  • 建设银行积分兑换商城网站百度官方下载
  • 微信 公司网站 怎么做域名解析查询工具
  • 做动画 的 网站考研培训班集训营
  • 网站升级建设百度竞价收费标准
  • 中国体育新闻热点优化英文
  • 小程序制作网站体育新闻最新消息
  • 西安大网站建设公司排名轻饮食网络推广方案
  • 无锡网站建设制作设计做电商如何起步
  • 胶州网站建设哪里有重庆网站seo搜索引擎优化
  • 请列出五个以上做外贸的网站今天最新的新闻头条新闻
  • 做poster的网站itme收录优美图片官网
  • 唐山网站制作价格自己创建网页
  • 网站建设创新点百度推广账户搭建
  • 安阳吧贴吧优化疫情二十条措施
  • 网站开发公司业务广告设计自学教程
  • 混沌鸿蒙网站建设网络营销企业案例分析
  • 肇庆网站建设公司广告代运营公司
  • 北京微网站app镇江网站定制
  • 四川省住房和城乡建设厅官网查证seo软件视频教程
  • 市场推广方案和思路厦门关键词优化企业
  • 商业网站最佳域名英文seo外链发布工具
  • 做代购直接网站下单在线之家
  • 商城网站建设讯息成人职业技能培训有哪些项目
  • 巨野城乡住房建设局网站免费网站建设制作
  • 怎样查看网站点击量网站seo优化方案策划书
  • 湖南建设厅网站不良记录信息流优化师发展前景
  • 网站都有什么类型的百度知道登录