再帰を使用して文字列内で最長の回文を見つける

マイケルウォン

私のソリューションが一部の文字列に対してのみ機能する理由に固執しています。たとえば、「sdfbananabasdf」は「bananab」を返しますが、「dtattarrattatddetartrateedre」は無限ループで実行されます。前もって感謝します!

public String longestPalindrome(String s) {
    if(isPalindrome(s)) {
        return s;
    }
    String divisionOne = longestPalindrome(s.substring(0,s.length()-1));
    String divisionTwo = longestPalindrome(s.substring(1,s.length()));
    return (divisionOne.length() >= divisionTwo.length()) ? divisionOne : divisionTwo;        
}

private boolean isPalindrome(String s) {
    if(s.length() == 1) {
        return true;
    }
    int count = s.length() / 2;

    if(s.length() % 2 == 1) {
        count++;
    }
    for(int i = 0; i < count; i++) {
        if(s.charAt(i) != s.charAt(s.length() - 1 - i)) {
            return false;
        }
    }
    return true;
}
Pham Trung

基本的に、あなたのアルゴの時間計算量は O(2^n)

とするf(n)と、長さのある文字列の回文を計算する関数です。n最悪の場合、次のことがわかります。

f(n) = 2*f(n - 1)
f(n - 1) = 2*f(n - 2)
...
f(1) = 1

->f(n)時間計算量はO(2^n)

したがって、長い文字列の場合、プログラムの実行には長い時間がかかります。例のように、29文字の文字列には、O(2 ^ 29)またはO(5 * 10 ^ 8)演算が必要です。

:実際には、各操作は、2つの追加が必要substringisPalindrome時間複雑度はO(N * 2 ^ N)だけでなく、O(2 ^ n)が作る操作を、

時間の複雑さを軽減する方法は?動的計画法が答えになるはずです

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

部分文字列を逆にして最長の回文を見つける

分類Dev

再帰を使用して最長の有効なDNA配列を見つける方法は?

分類Dev

Rで正規表現を使用してテキスト内の最長の文字列を見つける方法

分類Dev

最長の回文部分文字列を見つける

分類Dev

Javascriptの再帰を使用してネストされた配列で最長の文字列を見つけますか?

分類Dev

再帰を使用して回文を見つける時間の複雑さ

分類Dev

再帰を使用して配列内の最大値を見つける

分類Dev

再帰を使用して配列内の最大要素を見つける

分類Dev

再帰を使用して配列内の最大値を見つける

分類Dev

再帰を使用して配列内の最大相対値を見つける

分類Dev

再帰を使用して配列の最小値を見つける?

分類Dev

最長の回文を見つける

分類Dev

最長の回文を見つける

分類Dev

文字列回文で欠落している文字を見つける

分類Dev

再帰関数の使用を避けて部分文字列を見つける

分類Dev

配列内で最も長い文字列を見つける

分類Dev

最長の文字列を見つける

分類Dev

JSの配列内の文字列で最長の単語を見つける方法

分類Dev

Pythonでシーケンスマッチャーを使用して最長の共通文字列を見つける

分類Dev

文字列内で最長の連続文字列パターンを見つけて消去します

分類Dev

再帰を使用して2つの文字列の編集距離を見つける

分類Dev

Pythonでregexを使用して文字列で長年の経験を見つける

分類Dev

再帰を使用して文字列内のすべての回文を数える方法は?

分類Dev

再帰を使用して文字列内のすべての回文を数える方法は?

分類Dev

文字列内で連続して繰り返される最長の部分文字列を見つけるPython関数を探しています

分類Dev

回文を見つける再帰関数

分類Dev

文字列内の文字のoccurancesの量を見つける再帰的に(javaの)

分類Dev

正規表現を使用してBashで再帰的な部分文字列を見つける方法は?

分類Dev

PHPの再帰を使用して配列の最大値を見つける

Related 関連記事

  1. 1

    部分文字列を逆にして最長の回文を見つける

  2. 2

    再帰を使用して最長の有効なDNA配列を見つける方法は?

  3. 3

    Rで正規表現を使用してテキスト内の最長の文字列を見つける方法

  4. 4

    最長の回文部分文字列を見つける

  5. 5

    Javascriptの再帰を使用してネストされた配列で最長の文字列を見つけますか?

  6. 6

    再帰を使用して回文を見つける時間の複雑さ

  7. 7

    再帰を使用して配列内の最大値を見つける

  8. 8

    再帰を使用して配列内の最大要素を見つける

  9. 9

    再帰を使用して配列内の最大値を見つける

  10. 10

    再帰を使用して配列内の最大相対値を見つける

  11. 11

    再帰を使用して配列の最小値を見つける?

  12. 12

    最長の回文を見つける

  13. 13

    最長の回文を見つける

  14. 14

    文字列回文で欠落している文字を見つける

  15. 15

    再帰関数の使用を避けて部分文字列を見つける

  16. 16

    配列内で最も長い文字列を見つける

  17. 17

    最長の文字列を見つける

  18. 18

    JSの配列内の文字列で最長の単語を見つける方法

  19. 19

    Pythonでシーケンスマッチャーを使用して最長の共通文字列を見つける

  20. 20

    文字列内で最長の連続文字列パターンを見つけて消去します

  21. 21

    再帰を使用して2つの文字列の編集距離を見つける

  22. 22

    Pythonでregexを使用して文字列で長年の経験を見つける

  23. 23

    再帰を使用して文字列内のすべての回文を数える方法は?

  24. 24

    再帰を使用して文字列内のすべての回文を数える方法は?

  25. 25

    文字列内で連続して繰り返される最長の部分文字列を見つけるPython関数を探しています

  26. 26

    回文を見つける再帰関数

  27. 27

    文字列内の文字のoccurancesの量を見つける再帰的に(javaの)

  28. 28

    正規表現を使用してBashで再帰的な部分文字列を見つける方法は?

  29. 29

    PHPの再帰を使用して配列の最大値を見つける

ホットタグ

アーカイブ