zoukankan      html  css  js  c++  java
  • 最长回文子串(暴力破解)

    题目描述

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

    解题思路

    此解题方法为暴力破解,通过找到一个字符,然后分别向两边扩展,直到找到最长的回文子串。

    char * longestPalindrome(char * s){
        int length=strlen(s); //字符串长度
        int start=0,len=0;//记录初始位置和子串长度
        /**
        长度为奇数时
        */
        for(int i=0;i<length;++i){
            int left=i-1,right=i+1;
            while(left>=0 && right<length && s[left]==s[right]){
                left--;right++;
            }
            if(right-left-1>len){
                start=left+1;
                len=right-left-1;
            }
        }
        /**
        长度为偶数时
        */
        for(int i=0;i<length;++i){
            int left=i,right=i+1;
            while(left>=0 && right<length && s[left]==s[right]){
                left--;right++;
            }
            if(right-left-1>len){
                start=left+1;
                len=right-left-1;
            }
        }
        s[start+len]='';  //
        return s+start;
    
    }

    ////才发现一个关于字符串的问题,如果一个长度为10的字符串str,例如:“0123456789”,如果将s[5]='',再返回s+2,那么这个返回的字符串就会变成“234”

  • 相关阅读:
    LeetCode之移除元素
    有被开心到hh(日常)
    交换排序
    插入排序
    顺序查找&折半查找
    C++之引用
    MySQL学习笔记
    C/C++程序编译过程
    计算机面试知识整合(更新中...)
    MFC之编辑框
  • 原文地址:https://www.cnblogs.com/laysfq/p/12930140.html
Copyright © 2011-2022 走看看