1332. Remove Palindromic Subsequences

LeetCode easy original: C# #array #csharp #easy #leetcode #string
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.

Вам дана chuỗi s, состоящая только из букв 'a' и 'b'. За один шаг вы можете удалить одну палиндромную subsequence из s.

return минимальное количество шагов, чтобы сделать данную строку пустой.

chuỗi является subsequenceю данной строки, если она создается путем удаления некоторых символов из данной строки без изменения их порядка. Обратите внимание, что subsequence не обязательно должна быть непрерывной.

chuỗi называется палиндромом, если она читается одинаково как вперед, так и назад.

Ví dụ:

Input: s = "ababa"

Output: 1

Explanation: s is already a palindrome, so its entirety can be removed in a single step.

C# lời giải

đã khớp/gốc
public class Solution {
    public int RemovePalindromeSub(string s) {
        if (string.IsNullOrEmpty(s)) {
            return 0;
        }
        if (new string(s.Reverse().ToArray()) == s) {
            return 1;
        }
        return 2;
    }
}

C++ lời giải

bản nháp tự động, xem lại trước khi gửi
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public int RemovePalindromeSub(string s) {
        if (string.IsNullOrEmpty(s)) {
            return 0;
        }
        if (new string(s.Reverse().ToArray()) == s) {
            return 1;
        }
        return 2;
    }
}

Java lời giải

bản nháp tự động, xem lại trước khi gửi
import java.util.*;
import java.math.*;

// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
    public int RemovePalindromeSub(String s) {
        if (String.IsNullOrEmpty(s)) {
            return 0;
        }
        if (new String(s.Reverse().ToArray()) == s) {
            return 1;
        }
        return 2;
    }
}

Python lời giải

đã khớp/gốc
class Solution:
    def removePalindromeSub(self, s: str) -> int:
        if not s:
            return 0
        if s == s[::-1]:
            return 1
        return 2

Go lời giải

đã khớp/gốc
func removePalindromeSub(s string) int {
    if len(s) == 0 {
        return 0
    }
    reversedString := reverseString(s)
    if reversedString == s {
        return 1
    }
    return 2
}

func reverseString(s string) string {
    runes := []rune(s)
    for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
        runes[i], runes[j] = runes[j], runes[i]
    }
    return string(runes)
}

Algorithm

Если chuỗi s уже является палиндромом, return 1, так как можно удалить всю строку за один шаг.

Если chuỗi s не является палиндромом, return 2. В этом случае можно удалить все символы 'a' за один шаг, а затем все символы 'b' за второй шаг (или наоборот).

Таким образом, минимум шагов для опустошения строки всегда будет либо 1, либо 2, в зависимости от того, является ли chuỗi палиндромом.

😎

Vacancies for this task

việc làm đang hoạt động with overlapping task tags are đã hiển thị.

Tất cả việc làm
Chưa có việc làm đang hoạt động.