专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

添加字母变成回文字符串问题(Java实现)

看到一个算法题—>给定一个字符串,问是否能通过添加一个字母将其变为回文串
贴上自己的实现思路:

  • 这个添加字符可以是添在开头,也可以是添加在队尾,也可能是添加在中间
  • 能通过添加一个字符使字符串变成回文字符串,也就意味着如果删掉字符串开头或结尾一个字符后,这个子串应该是回文字符串。
  • 或者这个字符串本身是一个回文字符串,因为在字母串中间添加字母,也是回文字符串。
  • 如果它的首字母与末字母相同,那么将这两个字母去掉,重复这个过程,直到不相同。
  • 因为”fcbabf”的情况下,是要在”bf”之间添加c,整体就会变成回文字符串,也就意味要将之前首尾相同的
import java.util.*;
public class addOne {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        System.out.println(isPalindrome(str));

    }

    private static String isPalindrome(String str) {
        if(str.length()<2) return "YES";
        int start=0;
        int end =str.length()-1;
        char[] arr = str.toCharArray();
        //把首尾相同的字符排除不进入比较
        while(arr[start]==arr[end]&&start<end){
            start++;
            end--;
        }
        str=str.substring(start,end+1);
        //三种情形:去掉头字符后回文;去掉尾字符后回文;本身回文;
        if (isP(str.substring(1)) || isP(str.substring(0, str.length() - 1))||isP(str)) {
            return "YES";
        }else{
            return "NO";
        }

    }
    //Java特有方法判断回文
    private static boolean isP(String str){
        return new StringBuilder(str).reverse().toString().equals(str);
    }
}

文章永久链接:https://tech.souyunku.com/48638

未经允许不得转载:搜云库技术团队 » 添加字母变成回文字符串问题(Java实现)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们