leetcode93. 复原 IP 地址

博主分享了聆听樊登解读论语的心得,如何将古代智慧应用于现代技术学习中。通过论语引导,提升学习效率,特别提到在编程中保持心态平和的重要性。文章探讨了如何在代码实现中应用类似'君子坦荡荡小人常威威'的理念。
摘要由CSDN通过智能技术生成

一:每日论语解读

follow me !! 君子坦荡荡 小人常威威
在这里插入图片描述

二:题目

在这里插入图片描述

三:上码

class Solution {
public:
    /**
    思路:1.分析题意本题依然是切割字符串(我们需要对要分割的字符串做出处理 需要判断我们截取的字符串
            是否合法)
         2。关于‘.’的处理  我们是在原字符串的基础上进行插入和删除   
    */
    vector<string>ans;
    //参数 index 是因为防止出现重复 ,pointNum 是记录小数点的数量  当小数点的数量为3的时候  我们
    //就已经切割成了4段
    void backstacking(string &s,int index,int pointNum) {
        if(pointNum == 3) {
             //判断第四段函数是否合法
            if(isgoodStr(s,index,s.size()-1)){//字符串最后一位的下标比字符串长度小一
                ans.push_back(s);
            }
            return;
        }
         
        for(int i = index; i < s.size(); i++) {
            if(isgoodStr(s,index,i)) {
                pointNum++;
                s.insert(s.begin()+i+1,'.');//这里插入函数的第一位是代表我们要插入的位置
                backstacking(s,i+2,pointNum);//插入'.'后下一个字串的起始位置是i+2
                pointNum--;
                s.erase(s.begin()+i+1);
            }else{
                break;//如果不合法就跳过此层的遍历
            }
        }
    }
    //判断截取的字符串是否合法
    bool isgoodStr(string &s,int start,int end) {

        if(start > end) return false;//如果不加上这一步的话  那么就会出现ip 第四个数为空的状况
     
        //如果开头是0那就不合适 但是单个的0是合适的 所以需要start != end
        if(s[start] == '0' && start != end) {
            return false;
        }  
        int num = 0;
        //接下俩就是判断输入的字符是否超过255  是否合法
        for(int i = start; i <= end; i++) {
            if(s[i] > '9' || s[i] < '0'){
                return false;
            }
            num = num*10+(s[i]-'0');
            if(num > 255) {
                return false;
            }
        }
        return true;
    }   
    vector<string> restoreIpAddresses(string s) {
          backstacking(s,0,0);
          return ans;
    }
};

在这里插入图片描述

最近太烦躁了 学习效率还低 晚上听书的时候 听到樊登经常解读论语 来解释人们遇见的一些困惑 其实仔细想想 也挺对
毕竟流传了好几千年 所以这些都是精髓 我们现在遇到的问题 可能我们的祖先早就遇见过了 小时候用脑子背论语
长大后 才明白应该去用心理解论语的真正内涵 人迷茫烦躁的时候 该信些什么呢 我现在相信论语 心平静了 脑子就不胡思乱想了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天向上的菜鸡杰!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值