1332.回文サブシーケンスを削除します

s文字'a' と 'b' 。のみで構成される 文字列を指定します 操作から削除するたびにs 、パリンドロームを順番に削除 でき ます

指定された文字列(文字列は空)のすべての文字を削除するための削除の最小数を返します。

「サブシーケンス」の定義:元の文字の順序を変更せずに元の文字列の一部の文字を削除して文字列を取得できる場合、その文字列は元の文字列のサブシーケンスです。

「回文」の定義:文字列が前後方向に同じように読み取られる場合、その文字列は回文です。

 

例1:

入力: s = "ababa"
出力: 1
説明:文字列自体は回文配列であり、一度だけ削除する必要があります。

例2:

入力: s = "abb"
出力: 2
説明: " a bb"-> " bb "-> ""。
最初に回文サブシーケンス "a"を削除し、次に "bb"を削除します。

例3:

入力: S = "baabb"
出力: 2
説明: " BAAのBのB " - > "B" - > ""。
BAAB "[削除"B"まず回文部分シーケンスを削除します"。

例4:

入力: s = ""
出力: 0

 

促す:

  • 0 <= s.length <= 1000
  • s 「a」と「b」の文字のみが含まれます
package Solution1332;

class Solution {
	public int removePalindromeSub(String s) {
		if (s.length() == 0) {
			return 0;
		}
		if (isPalindrome(s)) {
			return 1;
		}
		return 2;
	}

	public boolean isPalindrome(String s) {
		int mid = s.length() / 2;
		int index = 0;
		while (index < mid) {
			char i = s.charAt(index);
			char j = s.charAt(s.length() - 1 - index);
			if (i == j) {
				index++;
			} else {
				return false;
			}
		}
		return true;
	}

	public static void main(String[] args) {
		Solution sol = new Solution();
		String s = "bbaabaaa";
		System.out.println(sol.removePalindromeSub(s));
	}
}

 

おすすめ

転載: blog.csdn.net/allway2/article/details/114852413