zoukankan      html  css  js  c++  java
  • leetcode——93.复原IP地址

    public List<String> restoreIpAddresses(String s) {
            int len = s.length();
            List<String> res = new ArrayList<>();
            if(len<4 ||len>12) {
                return res;
            }
            Deque<String> path = new ArrayDeque<>(4);   //这里学习到了
            int splitTimes = 0;//已经分割出来多少个IP段
            dfs(s,len,splitTimes,0,path,res);
            return res;
        }
    
        private int judgeIfIpSegment(String s ,int left,int right){  //判断子区间是否能成为一个IP段
            int len = right-left+1;
            if(len>1 &&s.charAt(left) =='0'){  //大于1位的时候,不能以0开头
                return -1;
            }
            int res = 0;
            for(int i = left;i<=right;i++){
                res = res*10 + s.charAt(i) -'0';
            }
            if(res>255){
                return -1;
            }
            return res;
        }
        private void dfs(String s, int len, int split, int begin, Deque<String> path, List<String> res) {
            if(begin == len){
                if(split == 4){
                    res.add(String.join(".",path));
                }
                return;
            }
            if(len - begin < (4-split)||len - begin > 3*(4-split)){
                return;
            }
            for(int i = 0;i<3;i++){
                if(begin + i >= len){
                    break;
                }
                int ipSegment = judgeIfIpSegment(s,begin,begin+i);
                if(ipSegment != -1){   //有效IP段
                    path.addLast(ipSegment+"");
                    dfs(s,len,split+1,begin+i+1,path,res);
                    path.removeLast();
                }
            }
        }

    没能自己独立解决。

    ——2020.6.29

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    rsync备份服务
    Linux命令行基础及基础命令
    Linux重要目录及文件
    shell编程基础
    学习与生活
    从0开始使用python flask编写博客网站(2)
    python 七牛云图床的使用
    从0开始使用python flask编写博客网站(1)
    如何学习编程 我的编程学习之路
    Pyqt5 基本布局方式
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13206373.html
Copyright © 2011-2022 走看看