Assunto Descrição:
Você dá uma string s, é apenas pela letra 'a' e 'b' composição. Cada vez que uma operação de eliminação pode ser removido a partir do s palindrica sequência .
Apagar para apagar o número mínimo de retorno dada cadeia todos os personagens (a cadeia está vazia) de.
"Subsequence" é definido: se uma cadeia de caracteres não pode alterar a ordem original, removendo alguns personagens obter a string original, a string é uma sequência da cadeia original.
"Palíndromo" é definido: se uma cadeia de leitura para trás e para a frente é consistente, então a string é um palíndromo.
Tópico Fonte: botão estadia (LeetCode)
ideias de resolução de problemas:
Muitos confundir este assunto, porque se a substring e subsequência este conceito não irá distinguir as palavras são duas questões difíceis, este tema é uma subsequência, muito mais fácil, porque menos exigido seqüência, ou então apenas mexidos string original, você pode livremente retirado personagem, dividida em três casos:
1. A string original é em si uma corda palíndromo, então só precisa limpar uma vez para apagar todos os personagens, o resultado retornado é 1
2. O caráter original não é uma string palíndromo, porque a cadeia é apenas uma e b desses dois personagens, assim você só precisa remover todos os dois personagens podem ser eliminadas (primeiro excluir todos os uma segunda vez excluir todos os b)
3. A string original é um passe vazia diretamente de volta 0
código de implementação da seguinte forma:
público int removePalindromeSub (String s) { se (s.length () == 0 ) return 0 ; int deixou = 0 ; int direito = s.length () - 1 ; caractere [] = caracteres s.toCharArray (); enquanto (esquerda < direita) { se (! caracteres [deixou ++] = caracteres [direita-- ]) return 2 ; } Retornar 1 ; }