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

leetcode日记(80)复原IP地址

只能说之前动态规划做多了,看到就想到动态规划,然后想想其实完全不需要,回溯法就行了。

一开始用了很多莫名其妙的代码,写的很复杂……(主要因为最后不能加‘.’)其实想想只要最后加入vector时去掉最后一个字符就好了。

class Solution {
    bool three(char a,char b,char c){
        if(a=='0') return 0;
        if((a-'0')*100+(b-'0')*10+(c-'0')>255) return 0;
        return 1;
    }
public:
    vector<string> result;
    void hs(string s,string r,int point){
        if(s.size()==0&&point==4) result.push_back(r.substr(0,r.size()-1));
        if(s.size()>(4-point)*3) return;
        if(s.size()<4-point) return;
        if(s.size()>=3&&three(s[0],s[1],s[2])==1){
            hs(s.substr(3),r+s.substr(0,3)+'.',point+1);
        }
        if(s.size()>=2&&s[0]!='0'){
            hs(s.substr(2),r+s.substr(0,2)+'.',point+1);
        }
        if(s.size()>=1){
            hs(s.substr(1),r+s[0]+'.',point+1);
        }
    }
    vector<string> restoreIpAddresses(string s) {
        string r;
        hs(s,r,0);
        return result;
    }
};

感想是剪枝真的很奇妙,看到题目提示1 <= s.length <= 20就觉得很不对劲,根据s的长度剪一下枝发现快了很多。

    http://www.dtcms.com/a/55265.html

    相关文章:

  • SpringBoot实战(三十五)微服务集成OAuth2.0(UAA)
  • socket聊天室—多线程服务器模型
  • 【PAT甲级1505列表排序】结构体排序
  • 【第21节】C++设计模式(行为模式)-Chain of Responsibility(责任链)模式
  • 【Java代码审计 | 第十篇】命令执行漏洞成因及防范
  • Scala:柯里化函数的基本介绍(通俗易懂)
  • 深度学习(斋藤)学习笔记(五)-反向传播2
  • 平面机械臂运动学分析
  • 如何高效地找工作?
  • tomcat单机多实例部署
  • 2025年渗透测试面试题总结-腾某讯-技术安全实习生(题目+回答)
  • 使用XShell连接RHEL9并配置yum阿里源
  • 使用express创建服务器保存数据到mysql
  • linux安装nginx
  • 【前端基础】Day 10 CSS3-2D3D
  • Visual Studio Code for SAP (SAP PRESS) (Leon Hassan)
  • Vue中常见动画执行详解
  • 数据库高级面试题
  • 第六课:数据库集成:MongoDB与Mongoose技术应用
  • javaweb:Maven、SpringBoot快速入门、HTTP协议
  • OpenCV视频解码性能优化十连击(实测帧率提升300%)
  • Java数据结构:解构排序算法的艺术与科学(一)
  • 光通信产业链分析
  • 第五课:Express框架与RESTful API设计:技术实践与探索
  • 动物摄像头监测识别AI技术结合了摄像头监测与人工智能识别(新产品)
  • 机动车授权签字人考试题库及答案
  • 青少年编程与数学 02-010 C++程序设计基础 30课题、操作符重载
  • 深度学习模型组件之优化器--动量优化方法(带动量的 SGD 与 Nesterov 加速梯度)
  • 自律 linux 第 36 天
  • 提升精力的高效方法指南