leetcode 680有効な回文II

タイトル内容

空でない文字列sを考えると、あなたは多くても1つの文字で削除することができます。あなたはそれ回文作ることができるかどうかを判断します。

例:
Input: "aba"
Output: True
Example 2:
Input: "abca"
Output: True
Explanation: You could delete the character 'c'.
Note:
The string will only contain lowercase characters a-z. The maximum length of the string is 50000.

分析プロセス

  • トピック分類:
    回文タイトル。
  • トピック分析:
    この質問はイージー問題として分類されています。ブルートフォース法を用いたが、(回文されていないすべての裁判官に手紙を削除)が、志望として、どのように(N ^ 2)の代わりにOの時間を短縮する方法を考える、これに固執することができます
    それを考慮することができます
    = L 0; R = s.length() - 1;
    s.charAt(L)は=時間s.charAt(r)は、削除または削除のR Lと判定された場合!
    一方のみが異なるため、我々は削除されて、これは、あります後は回文でなければなりません。

  • 境界分析:
    • ヌル分析
    • ボーダーサイクル分析
  • 分析の方法:
    • データ構造解析
    • ステートマシン
    • 状態遷移方程式
    • 最適なソリューション
  • テストケースの構築

コードの実装

class Solution {
    public boolean validPalindrome(String s) {
        int l = -1,r = s.length();
        while(l<r){
            if(s.charAt(++l)!=s.charAt(--r)){
                return Palindrome(s,l+1,r)||Palindrome(s,l,r-1);
            }
        }
        return true;
    }
    public boolean Palindrome(String s,int l, int r) {
        while(l<r){
            if(s.charAt(l++)!=s.charAt(r--)){
                return false;
            }
        }
        return true;
    }
}

効率を改善

拡張問題

おすすめ

転載: www.cnblogs.com/clnsx/p/12307386.html