首页 > 其他分享 >Day 21 回溯法part03| LeetCode 93. 复原 IP 地址,78.子集,90.子集II

Day 21 回溯法part03| LeetCode 93. 复原 IP 地址,78.子集,90.子集II

时间:2024-09-22 17:34:10浏览次数:8  
标签:return 21 nums int IP List startIndex 子集 res

93. 复原 IP 地址

93. 复原 IP 地址

class Solution {

        List<String> res=new ArrayList<>();
        public List<String> restoreIpAddresses(String s) {

            backtracking(s,0,0);
            return res;
        }
        void backtracking(String s,int startIndex, int point)
        {
            if(point==3) //深度为3就截止,3个逗点、四个字串
            {
                //需要对最后一个子串进行合法性判断
                String s1=s.substring(startIndex,s.length());//左闭右闭
                if(isValid(s1))
                {
                    res.add(s);
                }

                return;
            }
            for(int i=startIndex;i<s.length();i++)

            {
                   //字串区间 [startIndex,i]
                String s2=s.substring(startIndex,i+1);//substring 是左闭右开的,因此需要+1
                if(isValid(s2))
                {
                    s=s.substring(0,i+1)+"."+s.substring(i+1);

                    point++;
                    backtracking(s,i+2,point);//上一层加了一个‘0’,因此需要+2才可以到达第二层

                     s=s.substring(0,i+1)+s.substring(i+2);
                    point--;

                }
                else
                {
                    break;
                }
            }


        }
         //合法性判断
        boolean isValid(String s)
        {
            //长度
            if(s.length()>3||s.length()==0) return false;

            //大于255
                    int num=Integer.parseInt(s);
                    if(num>255) return false;
            //前导存在0
                    String s3=String.valueOf(num);
                    if(s3.equals(s))
                    {
                        return true;
                    }
                    else
                    {
                        return false;

                    }

           
        }
    }

78.子集

78. 子集

  class Solution {
        public  List<Integer> path=new LinkedList<>();
        public  List<List<Integer>> res=new ArrayList<>();
        public List<List<Integer>> subsets(int[] nums) {
            backtraking(nums,0);
            return res;

        }
        void backtraking(int[] nums,int startIndex)
        {
            res.add(new ArrayList<>(path));
            if(startIndex>=nums.length){
                return;
            }
            for(int i=startIndex;i<nums.length;i++)
            {
                    path.add(nums[i]);

                    backtraking(nums,i+1);

                    path.remove(path.size()-1);

            }
        }
    }

90.子集||

90. 子集 II

 class Solution {
        public  List<Integer> path=new LinkedList<>();
        public  List<List<Integer>> res=new ArrayList<>();

        public List<List<Integer>> subsetsWithDup(int[] nums) {
                Arrays.sort(nums);
            backtraking(nums,0);
            return res;
        }

        void backtraking(int[] nums,int startIndex)
        {
            res.add(new ArrayList<>(path));
           
            if(startIndex>=nums.length){
                return;
            }
            for(int i=startIndex;i<nums.length;i++)
            {
                //去重
                if(i>startIndex&& nums[i]==nums[i-1]) continue;
                    path.add(nums[i]);

                    backtraking(nums,i+1);

                    path.remove(path.size()-1);

            }
        }
    }

标签:return,21,nums,int,IP,List,startIndex,子集,res
From: https://www.cnblogs.com/FreeDrama/p/18425574

相关文章

  • noip2014联合权值
    noip2014联合权值题目描述无向连通图G有n个点,n-1条边。点从1到n依次编号,编号为i的点的权值为Wi,每条边的长度均为1。图上两点(u,v)的距离定义为u点到v点的最短距离。对于图G上的点对(u,v),若它们的距离为2,则它们之间会产生Wu×Wv的联合权值。请问图G上所有可产生......
  • 【题解】「Public NOIP Round #2」找零
    【题解】「PublicNOIPRound#2」找零[官解](PublicNOIPRound#2题解-博客-Qingyu的博客(pjudge.ac))Tag:背包、dp凸优化决策点单调触碰到知识点盲区了,所以来写几笔。首先,由于我们只关心最终状态下\(1\)的最多个数,其实有用的面值只有\(5,1\)(其她的可以当成若干......
  • 【题解】【枚举】—— [NOIP2014 普及组] 比例简化
    【题解】【枚举】——[NOIP2014普及组]比例简化[NOIP2014普及组]比例简化题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.思路解析2.AC代码[NOIP2014普及组]比例简化通往洛谷的传送门题目背景NOIP2014普及组T2题目描述在社交媒体......
  • JavaScript二进制浮点数和四舍五入错误
    二进制浮点数和四舍五入错误实数有无数个,但JS通过浮点数的形式,只能表示有限个数,JS表现的常常是真实值的近似表示。二进制无法表示类似于0.1这样的十进制数字,只能机器近似于0.1,看如下代码:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>3......
  • JavaScript中的Math对象详解
    JS中的算术运算基本运算:加减乘除求余数,+-*/%.复杂运算:通过Math对象的属性定义的函数和常量来实现。代码实现:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>3.1.3JS中的算术运算</title></head><body>......
  • 关于​​Vue学习笔记6中纯JavaScript实现的改进优化1
    0前言在 Vue学习笔记6:分别使用纯JavaScript和Vue的v-if指令来有条件地渲染网页元素_PurpleEndurer@5lcto的技术博客_51CTO博客的纯JavaScript实现有条件地渲染网页元素中,我们列举了苹果、桔子和葡萄3种水果,并使用3个<p>...</p>来对应,在实现显示用户选择的水果的showFruit函数中,......
  • NOIP2024模拟赛7 总结
    NOIP2024模拟赛7总结A.恰钱没啥好说的。赛场就过了。比较难蚌的是,第一遍本地测的时候没有写spj,导致我们很多人T1都直接挂零了。不过后来配上重测了。B.排序由于某种神秘原因,导致线段树build写的范围是\(1\simn+1\),update的时候写的也是\(1\simn+1\),然而que......
  • 帝国CMS后台设置IP限制后,将自己的IP都限制了,如何处理?
    如果你在帝国CMS后台设置了IP限制,并不小心将自己的IP也加入了限制列表中,可以通过直接修改配置文件的方式来解除限制。以下是具体的步骤:步骤定位配置文件找到帝国CMS安装目录下的配置文件:  /e/class/config.php打开配置文件使用文本编辑器(如Dreamweaver或其......
  • ipsec+nat组合
    1、网络拓扑图2、需要注意的关键技术nat转换中需要排除ipsec网络R1端:aclnumber3000rule5denyipsource192.168.1.00.0.0.255destination172.16.1.00.0.0.255rule10permitIPsource192.168.1.00.0.0.255destinationanyintg0/0/0natoutbound3000R3端:aclnumber3......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript培训机构(画室)
    HTML+CSS+JS【培训机构】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......