《蘑菇街编程题》回文串
生活随笔
收集整理的這篇文章主要介紹了
《蘑菇街编程题》回文串
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目:給定一個字符串,問是否能通過添加一個字母將其變?yōu)榛匚拇?/p>
輸入描述:
一行一個由小寫字母構成的字符串,字符串長度小于等于10。
輸出描述:
輸出答案(YES\NO).
輸入例子1:
coco
輸出例子1:
YES
解析:思路是求得最大的回文子串,然后看最大的回文子串是否等于字符串的長度減1,如果等于,返回YES,否則返回NO
import java.util.Scanner;/*** Created by HP on 2017/8/4.*/ public class Main {//ceabadd//abbapublic static String maxPalinedrom(String s){int max=0;int left=0,right=0;for(int i=0;i<s.length();i++){//最大回文是奇數(shù)的情況int leftIndex=i-1;int rightIndex=i+1;while (leftIndex>=0&&rightIndex<s.length()){if(s.charAt(leftIndex)==s.charAt(rightIndex)){leftIndex--;rightIndex++;}else {break;}}leftIndex++;rightIndex--;if((rightIndex-leftIndex+1)>=max){max=rightIndex-leftIndex+1;left=leftIndex;right=rightIndex;}}for(int i=0;i<s.length();i++){//最大回文是偶數(shù)的情況//abbaint leftIndex=i;int rightIndex=i+1;while (leftIndex>=0&&rightIndex<s.length()){if(s.charAt(leftIndex)==s.charAt(rightIndex)){leftIndex--;rightIndex++;}else {break;}}leftIndex++;rightIndex--;if((rightIndex-leftIndex+1)>=max){max=rightIndex-leftIndex+1;left=leftIndex;right=rightIndex;}}if(max==s.length()-1){return "YES";}//return s.substring(left,right+1);//題目并不要求輸出最大回文子串,但是可以求得的最大連續(xù)子回文子串return "NO";}public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()){System.out.println(maxPalinedrom(sc.next()));}} }總結
以上是生活随笔為你收集整理的《蘑菇街编程题》回文串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《leetcode》single-num
- 下一篇: 最大递增子序列