Boa noite cara joia, olha ficou um pouco estranho a explicação mas o seguinte tem varias formas de comparar uma String a outra uma delas vou citar a seguir.
É O SEGUINTE : TENHO ESSAS 3 STRINGS A = “Eric” , B = “x e x r x i x c x”, e C = “x e x r x c x i x”;
Quero compara-las de modo que o resultado informa que com visto a sequencia da string bem em relação a A excluindo os “x” forma o nome Eric assim como na String A, já a C não mostra eric …
pvrsouza
Primeiro trate a String ‘b’:
b=b.replaceAll("x","");
DICA.: É necessário atribuir o resultado de b.replaceAll novamente na variável ‘b’ porque Strings em Java são imutáveis.
Depois é só comparar…
Matheus_terra
O código abaixo funciona perfeitamente:
publicclassTratandoString{publicstaticvoidmain(String[]args){StringA="Eric",B="xExrxixcx",C="xExrxcxix";ehSequencial(A,B,C);}publicstaticvoidehSequencial(Stringa,Stringb,Stringc){if(a.equals(b.replace("x","")))System.out.println("A é subsequencia de B");elseSystem.out.println("A não é subsequencia de B");if(a.equals(c.replace("x","")))System.out.println("A é subsequencia de C");elseSystem.out.println("A não é subsequencial de C");if(b.equals(c.replace("x","")))System.out.println("B é subsequencia de C");elseSystem.out.println("B não é subsequencia de C");}}
Se você perceber, na atribuição de cada String, eu coloquei o "E" maiúsculo em todas, pois se colocar "e" minusculo, nenhuma vai ser subsequencia da outra, pois como sabemos o Java é case sensitive. Espero ter ajudado.
pvrsouza
Matheus terra:
O código abaixo funciona perfeitamente:
publicclassTratandoString{publicstaticvoidmain(String[]args){StringA="Eric",B="xExrxixcx",C="xExrxcxix";ehSequencial(A,B,C);}publicstaticvoidehSequencial(Stringa,Stringb,Stringc){if(a.equals(b.replace("x","")))System.out.println("A é subsequencia de B");elseSystem.out.println("A não é subsequencia de B");if(a.equals(c.replace("x","")))System.out.println("A é subsequencia de C");elseSystem.out.println("A não é subsequencial de C");if(b.equals(c.replace("x","")))System.out.println("B é subsequencia de C");elseSystem.out.println("B não é subsequencia de C");}}
Se você perceber, na atribuição de cada String, eu coloquei o "E" maiúsculo em todas, pois se colocar "e" minusculo, nenhuma vai ser subsequencia da outra, pois como sabemos o Java é case sensitive. Espero ter ajudado.
Não precisava colocar a letra maiuscula não. Bastava fazer a comparação usando o método toUpperCase(). Assim transforma tudo em maiuscula e pronto.
if(a.toUpperCase().equals((b.replace("x","")).toUpperCase()))System.out.println("A é subsequencia de B");else
....
Matheus_terra
pvrsouza:
Matheus terra:
O código abaixo funciona perfeitamente:
publicclassTratandoString{publicstaticvoidmain(String[]args){StringA="Eric",B="xExrxixcx",C="xExrxcxix";ehSequencial(A,B,C);}publicstaticvoidehSequencial(Stringa,Stringb,Stringc){if(a.equals(b.replace("x","")))System.out.println("A é subsequencia de B");elseSystem.out.println("A não é subsequencia de B");if(a.equals(c.replace("x","")))System.out.println("A é subsequencia de C");elseSystem.out.println("A não é subsequencial de C");if(b.equals(c.replace("x","")))System.out.println("B é subsequencia de C");elseSystem.out.println("B não é subsequencia de C");}}
Se você perceber, na atribuição de cada String, eu coloquei o "E" maiúsculo em todas, pois se colocar "e" minusculo, nenhuma vai ser subsequencia da outra, pois como sabemos o Java é case sensitive. Espero ter ajudado.
Não precisava colocar a letra maiuscula não. Bastava fazer a comparação usando o método toUpperCase(). Assim transforma tudo em maiuscula e pronto.
if(a.toUpperCase().equals((b.replace("x","")).toUpperCase()))System.out.println("A é subsequencia de B");else
....
Mas se usar toUpperCase, fugirá do enunciado. Coloquei maiúscula pra ficar de acordo com o que ele pediu, pra A ser subsequencia de B, mas do jeito que ele passou os valores da String, nenhum é subsequencia do outro, se levar em consideração minusculas e maiusculas.
ViniGodoy
Galera, obviamente não terá só “x” na String que Eric pode ser subsequencia. No enunciado, o “x” foi só usado para indicar um caractere qualquer, e para ficar fácil de ler o enunciado.
A String A será subsequencia de B, se todas as suas letras aparecerem na ordem, independente de outras letras estarem no meio.
Portanto:
Eric também será uma subsequencia de: ealksjdlajdalr8384742i92382983c.
Assim como Pedro será subsequencia de:
p192812e2397373najheuwyeuwydiuydiufydisurkkjnjnneweo
Me parece que é só uma questão de fazer um for sobre a sequencia B, e controlar com um índice qual letra já foi vista na sequencia A.
ViniGodoy
classSubsequencias{publicstaticvoidmain(Stringargs[]){StringA="Eric";StringB="eajdhaskjhdsrakjshdkasdhiasljdlsajdsakljc";if(subsequencia(A,B)){System.out.println("É subsequencia");}else{System.out.println("Não é subsequencia");}}privatestaticbooleansubsequencia(Stringa,Stringb){a=a.toLowerCase();b=b.toLowerCase();intindex=0;for(charch:b.toCharArray()){if(ch==a.charAt(index)){index++;}}returnindex==a.length();}}
pvrsouza
ViniGodoy:
Galera, obviamente não terá só “x” na String que Eric pode ser subsequencia. No enunciado, o “x” foi só usado para indicar um caractere qualquer.
A String A será subsequencia de B, se todas as suas letras aparecerem na ordem, independente de outras letras estarem no meio.
Portanto:
Eric também será uma subsequencia de: ealksjdlajdalr8384742i92382983c também é subsequencia.
Assim como Pedro será subsequencia de:
p192812e2397373najheuwyeuwydiuydiufydisurkkjnjnneweo
Me parece que é só uma questão de fazer um for sobre a sequencia B, e controlar com um índice qual letra já foi vista na sequencia A.
Verdade!
F
Felipe_T
Galera muito obrigado pela ajuda, deu certo aqui … Vlw mesmo ;D