当前位置: 首页 > news >正文

力扣(131.93)补9.21

131.分割回文串

又是不会做的一题呢。

340c61afa0f34dab8593ad0983b6bef2.png

代码看起来不难,但想出代码还是很难得。

 

class Solution {

    public List<List<String>> partition(String s) {

        List<List<String>> ans=new ArrayList<>();

        List<String> list=new ArrayList<>();

        back(ans,list,s,0);

        return ans;

 

    }

    boolean huiwen(String s ,int index,int i){

        for(int j=index,k=i;j<k;j++,k--){

            if(s.charAt(j)!=s.charAt(k))

            return false;

        }

        return true;

    }

    void back(List<List<String>> ans,List<String> list,String s,int index){

        if(index>=s.length()){

            ans.add(new ArrayList<>(list));

            return ;

        }

        for(int i=index;i<s.length();i++){

            if(huiwen(s,index,i)==true){

                list.add(s.substring(index,i+1));

            }

            else{

                continue;

            }

            back(ans,list,s,i+1);

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

        }

 

    }

}

93.复原IP地址

不会,距离上次做题又过了3个星期,本来是想每日2题,结果搞笑的是,大概每隔2个星期碰一次力扣,最终做成了每日一题的样子,由于某些因素,最近又要考虑用C++刷题。

class Solution {

private:

    vector<string> res;

    bool isvalid(const string&s,int start,int end){

        if(start>end)

        return false;

        if(s[start]=='0'&&start!=end)

        return false;

这俩个if语句是为了解决部分特殊用例。很细节的。

        int num=0;

        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;

    }

    void back(string&s,int start,int pointnum){

        if(pointnum==3){

            if(isvalid(s,start,s.size()-1))

            res.push_back(s);

            return;

        }

        for(int i=start;i<s.size();i++){

            if(isvalid(s,start,i)){

                pointnum++;

                s.insert(s.begin()+i+1,'.');

                back(s,i+2,pointnum);

                s.erase(s.begin()+i+1);

                pointnum--;

            }else break;

        } 

    }

    public:

    vector<string> restoreIpAddresses(string s) {

        res.clear();

        if(s.size()<4||s.size()>12) return res;

        back(s,0,0);

        return res;

    }

};

相关文章:

  • 西安招商型网站建设/公司网站设计需要多少钱
  • 汾阳做网站/小程序开发哪家更靠谱
  • 网站建设有什么用/营销效果分析怎么写
  • 企业网站建设报价/濮阳市网站建设
  • 馆陶网站建设价格/深圳市企业网站seo营销工具
  • 网站前后端用什么软件做/seo入门培训课程
  • react基础Day04-React原理揭秘React路由基础
  • excel函数技巧:函数TEXT七助数据大变身
  • group by详解
  • 【算法】二叉树
  • 有了独自开,我们离自己开发一套系统还会远吗
  • 【MySQL进阶教程】MySQL管理
  • opencv的mat openvino的tensor libtorch的tensor
  • transformer算法解析
  • 前端——周总结系列二
  • 这一年,熬过许多夜,也有些许收获 | 2022年度总结
  • 第17章 配置类的反射方式实例化、单例和依赖注入
  • 深度学习22- 讨论AlphaGo Zero方法的结构