LeetCode第93题复原 IP 地址

继续打卡算法题,今天学习的是LeetCode第93题复原 IP 地址,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。

分析一波题目

本题可以使用回溯算法求解,其实就是把字符串拆分成4个子组合的过程。我们通过画树形图可以将求解过程描述出来。

我们每次都取小于3位数字作为ip的某一段,再取剩下的其他ip段,如果取到了最后,并且有效ip段是4个,那么这样的组合就是有效的ip,加入结果集即可。

本题解题技巧

1、使用回溯算法,剪枝的条件需要控制,有效的ip段是4个。

编码解决

java 复制代码
class Solution {
  public List<String> restoreIpAddresses(String s) {
        List<String> ans=new ArrayList();
        List<String> temp=new ArrayList();
        backTracking(s,0,ans,temp);
        return ans;
    }

    public void backTracking(String s,int begin,List<String> ans,List<String> temp){
        if(temp.size()==4){
            //有效的ip段,加入结果集
            if(begin==s.length()){
                ans.add(String.join(".",temp));
            }
            return;
        }
        //每次取3位以下的字符作为一段ip。这里也是减枝的情况。
        for(int i=begin;i<begin+3&&i<s.length();++i){
            String sub=s.substring(begin,i+1);
            //不是有效的ip段,减枝
            if(!isRange(sub)){
                continue;
            }
            temp.add(sub);
            backTracking(s,i+1,ans,temp);
            //回溯
            temp.remove(temp.size()-1);
        }
    }
    
    public boolean isRange(String sub){
        if(sub.length()!=1&&sub.charAt(0)=='0'){
            return false;
        }
        return Integer.parseInt(sub)<=255?true:false;
    }
}

总结

1、了解过回溯思路对于解决本题会有感觉的,组合和排列问题我们要记住通过画树形图来分析解题思路。

相关推荐
changhong198638 分钟前
如何在 Spring Boot 中配置数据库?
数据库·spring boot·后端
QWQ___qwq43 分钟前
Java线程安全深度总结:基本类型与引用类型的本质区别
java·安全·面试
识君啊1 小时前
Java异常处理:中小厂面试通关指南
java·开发语言·面试·异常处理·exception·中小厂
qyzm3 小时前
天梯赛练习(3月13日)
开发语言·数据结构·python·算法·贪心算法
月月玩代码3 小时前
Actuator,Spring Boot应用监控与管理端点!
java·spring boot·后端
逆境不可逃3 小时前
LeetCode 热题 100 之 64. 最小路径和 5. 最长回文子串 1143. 最长公共子序列 72. 编辑距离
算法·leetcode·动态规划
XPoet4 小时前
AI 编程工程化:Skill——给你的 AI 员工装上技能包
前端·后端·ai编程
CoderCodingNo4 小时前
【GESP】C++五级练习题 luogu-P1182 数列分段 Section II
开发语言·c++·算法
放下华子我只抽RuiKe54 小时前
机器学习全景指南-直觉篇——基于距离的 K-近邻 (KNN) 算法
人工智能·gpt·算法·机器学习·语言模型·chatgpt·ai编程
kisshuan123964 小时前
[特殊字符]【深度学习】DA3METRIC-LARGE单目深度估计算法详解
人工智能·深度学习·算法