某公司 回文串 算法实现

给定一个字符串,问是否能够通过增加一个字母将其变成“回文串”。“回文串”是指正着和反着读都一样的字符串,如:"aa","bob","testest"是回文串,"alice"、"time"都不是回文串。
输入:一行一个由小写字母构成的字符串,字符串长度不超过10。
输出:如果字符串可以通过增加一个字符成为回文串,则输出“YES",否则,输出”NO"。
样例输入:coco
样例输出:YES

解答思路:在字符串的每个位置,用'a'-'z'的每个字符,尝试构成回文串,成功返回"YES",否则,结束时返回"NO"
java代码实现如下:
import java.util.Scanner;

public class Main {
    //input
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        String s = null;
        while(cin.hasNextLine()){
            s = cin.nextLine();
            //call func
            String str = detectString(s);
            System.out.println(str);
        }
        cin.close();
    }
    //detect whether this string is Palindrome
    public static boolean isPipeline(String s){
        char[] arr = s.toCharArray();
        boolean flag = true; 
        for(int i=0; i<(arr.length+1)/2; i++){
            if(arr[i]!=arr[arr.length-1-i]){
                flag = false;
                return flag;
            }
        }
        return flag;
    }

    public static String detectString(String s){
        if(s==null || s.length()>10){
            return null;
        }
        int ch = 'a';
        for(int j=0; j<s.length(); j++){
            for(int i=0; i<26; i++ ){
                int addChar = ch + i;//a-z
                if(isPipeline(s.substring(0,j) + (char)addChar 
                        + s.substring(j))){                  //mid
                    return "YES";
                }else if(isPipeline("" + (char)addChar + s)){//first index
                    return "YES";
                }
                else if(isPipeline(s + (char)addChar)){      //last index
                    return "YES";
                }
            }
        }
        return "NO";
    }
}
上述实现,是在没有考虑算法效率的基础上实现的,本人本机编译器上测试通过,但是,在赛码网上测试用例通过率却为0%,并未提示说TLE,因此,希望大家能有更好的思路提供,并且指导下通过率为0%的原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值