C++代码算法题:(5).最长回文子串

C++代码算法题:(5).最长回文子串题目及要求:给你一个字符串s,找到s中最长的回文子串。提示:1<=s.length<=1000s仅由数字和英文字母(大写和/或小写)组成原创代码:classSolution{public:stringlongestPalindrome(strings){intbegin=0;//每个当前子串的开头intend=0;//每个当前子串的末尾intvalue=0;//判断条件使用。条

大家好,又见面了,我是你们的朋友全栈君。

题目及要求:

给你一个字符串 s,找到 s 中最长的回文子串。

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成

原创代码:

class Solution { 
   
public:
    string longestPalindrome(string s) 
    { 
   
        int begin=0;//每个当前子串的开头
        int end=0;//每个当前子串的末尾
        int value=0;//判断条件使用。条件一:当形参string s不存在两个及两个以上元素个数的回文字串则value=1,条件二:当形参string s存在两个及两个以上元素个数的回文字串则value=0
        int max=0;//记录历史回文字串的最大元素个数
        string str;//代表当前回文串
        string str_2=s[0];//代表最大回文串
        for(begin=0;begin<=s.size()-1;begin++)
        { 
   
            for(end=begin;end<=s.size()-1;end++)
            { 
   
                value=0;
                /*条件一:当形参string s不存在两个及两个以上元素个数的回文字串则value=1*/
                for(int i=0;i<=(end-begin)/2;i++)
                { 
   
                    if(s[begin+i]!=s[end-i])
                    { 
   
                        value=1;
                        break;
                    }
                }
                /*条件二:当形参string s存在两个及两个以上元素个数的回文字串则value=0*/
                if(value==0)
                { 
   
                    str.erase(0,str.size());
                    for(int i=begin;i<=end;i++)
                    { 
   
                        str.push_back(s[i]);
                    }
                    str_2=str.size()>max?str:str_2;
                    max=str.size()>max?str.size():max;
                    if(str_2.size()==s.size())
                    return str_2;
                }
            }
        }
        return str_2;
    }
};

输出示例:

示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
示例 3:
输入:s = “a”
输出:“a”
示例 4:
输入:s = “ac”
输出:“a”

代码思路:

首先:
定义变量,并将str_2用s[0]赋初值,用以当形参string s不存在两个及两个以上元素个数的回文字串则输出形参s的首元素

int begin=0;//每个当前子串的开头
int end=0;//每个当前子串的末尾
int value=0;//判断下一个字符是否属于当前子串
int max=0;//记录历史回文子串的最大元素个数
string str;//代表当前回文子串
string str_2=s[0];//代表最大回文子串

其次:
每一个子串(形参s元素s[begin]至s[end]之间的元素)都先判断条件一(当前子串是否存在两个及两个以上元素个数的回文字串)是否满足。若满足条件一,则进行

value=1;
break;

则str_2的值不改变为初值s[0],接下来继续进行循环

end++

如果当前子串(形参s元素s[begin]至s[end]之间的元素)不满足条件一,则由于此时

value=0;

则直接进入条件二来将str(形参s元素s[begin]至s[end]之间的元素)重新赋值(注意str表示当前的回文子串)并通过变量max来判断当前回文子串str与历史最大回文子串str_2的元素进行比较,如果当前回文子串str元素个数比历史最大回文子串str_2的元素个数更大则将历史最大回文子串str_2重新赋值
注意接下来的语句是用来缩小程序运行时间的

if(str_2.size()==s.size())
return str_2;

接下来继续进行循环

end++

最后:
当满足begin>s.size()-1时退出程序,执行

return str_2

反思所得:

在这道题的解题过程中,我开始的时候是不明白回文的定义是什么的,但是经过代码的不断上传和查看他人的讲解,我明白了回文的定义(类似于“上海自来水来自海上”),了解了回文的定义我就重新修改了思路,为了简便算法,我开始考虑将程序分条件编程,并且在每个条件内尽量减少程序进行无用的部分。

LeetCode链接:

https://leetcode-cn.com/problems/longest-palindromic-substring/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132343.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 取(2堆)石子游戏(杭电2177)「建议收藏」

    取(2堆)石子游戏(杭电2177)

    2022年1月25日
    48
  • Qt中文本编辑器实现语法高亮功能(Qscitinlla)

    Qt中文本编辑器实现语法高亮功能(Qscitinlla)

    2021年11月19日
    20
  • java 各版本jni支持_java – 不支持的JNI版本0xFFFFFFFF

    java 各版本jni支持_java – 不支持的JNI版本0xFFFFFFFF从java代码使用本机DLL时有没有遇到过这个错误?它是JNI库的版本吗?还是一个未解决的依赖?错误:Causedby:java.lang.UnsatisfiedLinkError:unsupportedJNIversion0xFFFFFFFFrequiredbyC:\jnwasapi.dllatjava.lang.ClassLoader$NativeLibrary.load(…

    2022年5月17日
    52
  • d触发器q端的输出波形_D触发器、波形、代码(转)

    d触发器q端的输出波形_D触发器、波形、代码(转)在学习 verilog 之前 我们先学习一下 D 触发器以及它的代码 FPGA 的设计基础是数字电路 因此很多同学会认为我们要先学好数字电路之后 才学习 FPGA 但是 数字电路教材的内容很多 例如 JK 触发器 RS 触发器 真值表 卡诺图等 但是 这里的很多内容其实已经过时了 此外 对于 FPGA 的学习来讲 我们只用到了其中很少很少的一部分内容 如果没有数字电路的基础 我们建议就看一部分 知道 D 触发器就够了 那

    2025年6月15日
    3
  • linux wine qq2017,20170506-linux下最新WineQQ8.9.1安装教程

    linux wine qq2017,20170506-linux下最新WineQQ8.9.1安装教程本次教程是我根据很多前辈的文章整理出来的。linux下安装QQ的方法有很多,比如用genymotion安装安卓版qq,或者购买crossover后安装deepinQQ,不过,最常用的还是使用wine安装QQ,不过如果用WineWindowsProgramLoader执行QQ安装程序的话会遇到很多BUG,比如无法输入用户名或者无法输入中文等。谈到wine不得不说一下winetricks和win…

    2025年9月1日
    4
  • java 设置环境变量

    java 设置环境变量安装JDK向导进行相关参数设置。如图:正在安装程序的相关功能,如图:选择安装的路径,可以自定义,也可以默认路径。如图:成功安装之后,进行测试是否真的成功安装,点击【开始】—-【运行】—-输入CMD,在命令提示符里面输入“Java-version”并按回车键,出现下图,即为安装成功。如图:下面开始配置环境变量,右击【我的电脑】

    2022年5月11日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号