题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

分两种情况,一个是双数,一个是单数,内层循环通过两层循环进行判断当前的两个指针的位置对应的字符是否相等来确定是否是回文,第一个循环就是当前中间的字符。


import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            int max = method(s);
            System.out.println(max);
        }
    }
    
    public static int method(String s){
        int max = 0;
        for(int i =0;i<s.length();i++){
            int j = 1;
            while(i+j<s.length()&&i-j>=0 && s.charAt(i+j) == s.charAt(i-j)){
                j++;
            }
            max = Math.max(2*j-1,max);
            int k = 0;
            while(i+k+1<s.length()&&i-k>=0&&s.charAt(i+k+1) == s.charAt(i-k)){
                k++;
            }
            max = Math.max(2*k,max);
           
        }
        return max;
    }
    
}

全部评论

相关推荐

三题看不懂四题不明白二题无法AC&nbsp;T=int(input())&nbsp;for&nbsp;_&nbsp;in&nbsp;range(T):&nbsp;n=int(input())&nbsp;s=input().split()&nbsp;k,mx=1,1&nbsp;for&nbsp;i&nbsp;in&nbsp;range(len(s)-1):&nbsp;if&nbsp;len(s[i])&lt;len(s[i+1]):&nbsp;k+=1&nbsp;elif&nbsp;len(s[i])==len(s[i+1]):&nbsp;if&nbsp;s[i]&lt;=s[i+1]:&nbsp;k+=1&nbsp;...
恭喜臭臭猴子:第二题用栈就行。合法的括号直接出栈了,剩下的是不合法的,肯定都得一个一个走。出入栈的过程中得记下进栈的括号的下标。最后栈里剩下的括号如果相邻两个的下标不连续,说明它们中间有一个合法的括号序列被出栈,结果加一
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总 笔试
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务