Java:如何通过插入最少数量的字符来创建字符串的最短回文?

标签 java algorithm dynamic-programming palindrome

我目前有以下实现,它通过插入最少数量的字符来处理给定字符串的最短回文,但只处理前面的字符插入以创建最短回文。

但是通过以下实现,或者如果有更好的实现,我如何才能将字符插入到字符串中的任何 点以使其成为回文?

将接受并赞成答案。谢谢

public class Answer {
    public String findShortestPalindrome(String s) {
        int len = s.length();
        if (len <= 1) {
            return s;
        }
        int i = len - 1;
        for (; i >= 0; --i) {
            if (stringIsPalindrome(s, 0, i)) {
                break;
            }
        }

        StringBuilder sb = new StringBuilder(s.substring(i + 1));
        sb.reverse().append(s);
        return sb.toString();
    }

    public boolean stringIsPalindrome(String s, int start, int end) {
        while (start < end) {
            if (s.charAt(start) != s.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }
        return true;
    }
}

差异 寻找处理字符串中任意点插入的最短回文。

最佳答案

您可以试试这个解决方案。这应该有效!

public boolean stringIsPalindrome(String s, int start, int end) {

    String str1 = s.substring(0,Math.floor((end-start)/2));
    String str2 = s.substring(Math.floor((end-start)/2),end);
    str2 = reverseString(str2);
    return str1.equals(str2);
}

public String reverseString(String s) {
            //YOUR REVERSE STRING METHOD
    }

关于Java:如何通过插入最少数量的字符来创建字符串的最短回文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627598/

相关文章:

java - 将项目从 tomcat-5.5 迁移到 tomcat-7,导致 LifecycleException 和 Lorg/apache/catalina/util/StringManager not found

c - 如何在C中检索相对于给定目录的文件路径

c++ - 他贪心吗?

algorithm - 当N很大时,从1到N的所有数位的异或和

java - 应用程序启动失败 java.lang.NoClassDefFoundError : org/springframework/util/StopWatch$TaskInfo

java - 如何用 Java 替换文本中的字符串?

java - Gradle + OSGi Liferay7 模块,包括传递依赖项

algorithm - 一种从网页中提取产品数据的通用算法

c++ - 排列程序无法写入数组 - 运行时错误

algorithm - 设施位置的动态规划算法