1332. Remove Palindromic Subsequences
Вам дана Zeichenkette s, состоящая только из букв 'a' и 'b'. За один шаг вы можете удалить одну палиндромную subsequence из s.
return минимальное количество шагов, чтобы сделать данную строку пустой.
Zeichenkette является subsequenceю данной строки, если она создается путем удаления некоторых символов из данной строки без изменения их порядка. Обратите внимание, что subsequence не обязательно должна быть непрерывной.
Zeichenkette называется палиндромом, если она читается одинаково как вперед, так и назад.
Beispiel:
Input: s = "ababa"
Output: 1
Explanation: s is already a palindrome, so its entirety can be removed in a single step.
C# Lösung
zugeordnet/originalpublic 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ösung
Auto-Entwurf, vor dem Einreichen prüfen#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ösung
Auto-Entwurf, vor dem Einreichen prüfenimport 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ösung
zugeordnet/originalclass Solution:
def removePalindromeSub(self, s: str) -> int:
if not s:
return 0
if s == s[::-1]:
return 1
return 2
Go Lösung
zugeordnet/originalfunc 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
Если Zeichenkette s уже является палиндромом, return 1, так как можно удалить всю строку за один шаг.
Если Zeichenkette s не является палиндромом, return 2. В этом случае можно удалить все символы 'a' за один шаг, а затем все символы 'b' за второй шаг (или наоборот).
Таким образом, минимум шагов для опустошения строки всегда будет либо 1, либо 2, в зависимости от того, является ли Zeichenkette палиндромом.
😎
Stellen zu dieser Aufgabe
aktive Stellen with overlapping task tags are angezeigt.