1332. Remove Palindromic Subsequences
Вам дана 문자열 s, состоящая только из букв 'a' и 'b'. За один шаг вы можете удалить одну палиндромную subsequence из s.
return минимальное количество шагов, чтобы сделать данную строку пустой.
문자열 является subsequenceю данной строки, если она создается путем удаления некоторых символов из данной строки без изменения их порядка. Обратите внимание, что subsequence не обязательно должна быть непрерывной.
문자열 называется палиндромом, если она читается одинаково как вперед, так и назад.
예제:
Input: s = "ababa"
Output: 1
Explanation: s is already a palindrome, so its entirety can be removed in a single step.
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++ 해법
자동 초안, 제출 전 검토#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 해법
자동 초안, 제출 전 검토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 해법
매칭됨/원본class Solution:
def removePalindromeSub(self, s: str) -> int:
if not s:
return 0
if s == s[::-1]:
return 1
return 2
Go 해법
매칭됨/원본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
Если 문자열 s уже является палиндромом, return 1, так как можно удалить всю строку за один шаг.
Если 문자열 s не является палиндромом, return 2. В этом случае можно удалить все символы 'a' за один шаг, а затем все символы 'b' за второй шаг (или наоборот).
Таким образом, минимум шагов для опустошения строки всегда будет либо 1, либо 2, в зависимости от того, является ли 문자열 палиндромом.
😎
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.