当前位置: 首页 > 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的长度剪一下枝发现快了很多。

    相关文章:

  • 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协议
  • java做安卓游戏破解版下载网站/收录优美的图片
  • php培训学校网站源码/seo研究中心南宁线下
  • 网站建设哪家公司靠谱/bt磁力搜索神器
  • 建设网站以后怎么让百度收录呢/工作手机
  • 东道设计学院/seo是什么品牌
  • 做网站私活多少钱/怎么做游戏推广员