关于算法:Java:如何通过插入最少字符数来创建字符串的最短回文? | 珊瑚贝

Java: How to create the shortest palindrome of a string by inserting the minimum number of characters?


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

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

将接受并投票赞成答案。谢谢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;
    }
}

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

  • 这听起来像家庭作业。
  • 以最少的插入将字符串转换为回文字符串的可能重复项


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

1
2
3
4
5
6
7
8
9
10
11
public boolean stringIsPalindrome(String s, int start, int end) {

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

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

  • 我不认为这是乔所要求的。此外,您的 stringIsPalindrome 实际上比他的原始方法慢,因为它创建了一个额外的字符串,反转其中一个字符串,然后比较它们。
  • 抱歉!我只是提出一个可能的解决方案


你可以实现以下蛮力算法:

  • 如果输入字符串为空或由一个元素组成,则返回输入
  • 如果字符串的第一个字符等于最后一个字符,则将该过程应用于输入字符串,没有第一个和最后一个项目
  • 如果 first 和 last 不一样,那么你有两个选择:

    1
    2
    left = last + palindromed(input without last) + last  or
    right = first + palindromed(input without first) + first

    所以在这一步你选择最短的解决方案

    • 在我接受答案并投票之前,为澄清起见,您能否举一个我迄今为止实施的示例?谢谢


    来源:https://www.codenong.com/40627598/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9822.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?