Veja o código primeiro
classe pública maxhuiwen {public static void main (string [] args) {// TODO Method Auto-Gerated Stub String s = "abb"; Maxhuiwen (S); } // 1. Saída palíndrome string public static void maxhuiwen (string s) {// armazenamento o comprimento do comprimento da string int = s.Length (); // armazenamento a mais longa string palindroma string maxstring = ""; // Transize todas as substringas da sequência atual para (int i = 0; i <comprimento; i ++) {for (int j = i; j <comprimento+1; j ++) {string s1 = s.substring (i, j); // Se a string atual for uma sequência de palíndroma e for maior que o comprimento do maxstring, substitua o maxstring atual se (huiwen (s1) && s1.length ()> maxstring.length ()) {maxstring = s1; } //System.out.println(s1); }} // Se o comprimento do maxstring for maior ou igual a 2, significa que é uma sequência de palíndroma se (maxstring.length ()> = 2) {System.out.println (maxstring); } else {System.out.println ("sem string palíndrome"); }} // 2. Determine se a string é uma string palíndrome public static boolean huiwen (string s) {sinalizador boolean = true; int length = s.Length (); char s1 [] = s.toCharArray (); // antes e depois, atravesse a string e compare (int i = 0, j = comprimento-1; i <= j; i ++, j-) {if (s1 [i]! = S1 [j]) {flag = false; }} retornar sinalizador; }}1. Julgamento pastoral de cordas
Determine se uma string é um palíndromo
Descrição do problema, dada uma string, como a string t = "senhora"; para determinar se a string é um palíndroma
Método 1: 1. Defina dois ponteiros de elementos da corda (observe que o Java não tem o conceito de ponteiros), int Right = T.Length ()-1; int esquerd = 0;
2. Ou seja, a esquerda começa da esquerda, a direita começa à direita e compare se os caracteres referidos são iguais em sequência. Se forem iguais, esquerda ++, direita--; Caso contrário, ele será devolvido diretamente, não um pano de fundo.
while (esquerda <direita) {if (t.charat (esquerda)! = t.charat (direita)) retorna false; esquerda ++; direita-;} retorna true;Código:
/ * * 3: * Palíndrome * Descrição do Problema: Palíndrome, Palíndrome Inglês, refere -se a uma corda que lê a mesma e inversamente, como a senhora, eu me amo, * Método 1: * Análise: Use dois "ponteiros" para digitalizar desde o início e o final da string, respectivamente. Se os valores apontados por cada "ponteiro" forem iguais, este é palindrome*/ public boolean ispalindrome (string s) {if (s == null) retorna false; int esquerd = 0; int direito = s.Length ()-1; while (esquerda <direita) {if (s.charat (esquerda)! = s.charat (direita)) retornar false; Esquerda ++; certo--; } retornar true; } Método 2: String pastelar como "Senhora". Se você reverter todos eles, ainda receberá sua própria "senhora". Ao comparar as duas cordas, se forem iguais, é pastelar.
1. Implemente uma função que inverte as cordas
/** Implemente a função de inversão de uma string*/ private string reverse (string str) {string strresult = ""; for (int i = str.Length ()-1; i> = 0; i-) {strRresult+= str.Charat (i); } retornar strResult; } 2. Para a sequência de destino S, primeiro reverte -o temp = reverso (s) e, em seguida, julgue o tempo. Se for igual, é palíndromo, caso contrário, não é * a complexidade do tempo do algoritmo é o (n) */public boolean ispalindrome2 (string s) {string temp = reverso (s); if (s.equals (temp)) retorna true; elsereturn false;}Dois: como encontrar a corda palindrômica máxima para uma determinada string
Por exemplo, dada a string string t = "google", como encontrar sua substring palíndroma mais longa "goog"
1. A idéia mais simples e direta é encontrar todas as substringas da string e determinar se cada substring é um palíndromo, gravar, comparar e encontrar o palíndromo do comprimento máximo. * A complexidade do tempo do algoritmo é O (n^3)
/ * * 4, encontre a substring de palíndroma mais longa * Descrição do problema: Dada uma string, encontre a substring mais longa de palíndromo entre todas as suas substringas, como uma string do Google, a substring mais longa é a análise do POOG *: * 1, o Palindrome mais simples é o que é mais simples, o que é mais simples, o que é mais simples, o que se refere, o que é mais simples, o que se refere, o que se une a seriedade e o que se une a seriedade e, em seguida. A complexidade é o (n^3) */ public string longestpalindRome1 (string s) {string resultado = null; String tempstring = ""; // Defina o comprimento da substring palíndroma mais longa int max = 0; // transfira todos os elementos na sequência para (int i = 0; i <s.Length (); i ++) {// O ponteiro subscrito da matriz J começa a atravessar a string para (int j = s.Length ()-1; j> i; j-) {// o palindrome tempstring = s.substr (i, j+1); // Se o tempstring for uma substring palíndrome e seu comprimento (J-i+1)> max if (ispalindrome (tempstring) && (j-i+1)> max) {max = j-i+1; resultado = substring (i, j+1); }}} Retornar resultado; }2. A segunda idéia é julgar todos os personagens t [i] na string
Substring de comprimento uniforme centrado em t [i], t [i+1] é um palíndromo
É uma substring de comprimento ímpar centrado em t [i] um palíndromo
public string longestpalindrome2 (string t) {string resultado = null; // armazenar o comprimento da sequência de palíndroma máxima int max = 0; // viaja por cada caractere e julgue a substring de extensão da paridade com cada caractere como o centro para (int i = 0; i <t.length (); i ++) {// define dois ponteiros subcritivos da matriz e a sequência uniforme da subseqüência centrada em i, i+1 int pstart = i; int pend = i+1; while (pstart> = 0 && pend <= (t.Length ()-1) && t.charat (pstart) == t.charat (pend)) {pstart--; pend ++; } // Se o comprimento da substring> max, o comprimento da sequência sub-palindrome é temporariamente armazenado como a mais longa Substrome String = (Pend-1)-(Pstart+1) -1 = Pend-Pstart-1 se (Pend-Pstart-1> max) {max = Pend-Pstart-1; resultado = substring (pstart+1, pend-1+1); } // de i como centro, determine se a sequência ímpar estendida é a string palindroma pstart = i-1; pend = i+1; while (pstart> = 0 && pend <= (t.Length ()-1) && t.charat (pstart) == t.charat (pend)) {pstart--; pend ++; } if (pend-Pstart-1> max) {max = pend-Pstart-1; resultado = substrição (t, pstart+1, pend-1+1); }} Retornar resultado; }