Iniciante em Java - Preciso de ajuda com String

Olá pessoal,

sou iniciante em java e preciso de uma ajuda para descobrir mais de um caracter igual em uma string.

Ex.: abcad

se trata de uma senha e tem dois ‘a’ nessa string. Nesse caso eu iria imprimir: “Não pode conter dois caracteres iguais”.

class Main {
    
    public static void main(String[] args) {
        String senha = "abcad";
        
        if(letrasRepetidas(senha) == true) {
            System.out.println("Não pode conter dois caracteres iguais");
        }
        else {
            System.out.println("Senha válida");
        }
    }
    
    private static boolean letrasRepetidas(String senha) {
        for(int i = 0; i < senha.length() - 1; i++) {
            char letra = senha.charAt(i);
            
            for(int j = i+1; j < senha.length(); j++) {
                if(letra == senha.charAt(j))
                    return true;
            }
        }
        
        return false;
    }
}
1 curtida

Obrigado amigo, já resolveu meu problema.

Outra opção se estiver usando Java 8 ou superior seria assim:

public class Main {
  public static void main(String... args) {
    String senha = "abcad";

    if (temLetrasRepetidas(senha)) {
      System.out.println("Não pode conter dois caracteres iguais");
    } else {
      System.out.println("Senha válida");
    }
  }

  public static boolean temLetrasRepetidas(final String checkString) {
    return checkString.length() != checkString.chars().distinct().count();
  }
}

Achei aqui: https://stackoverflow.com/a/31558375/3334365

Parece que não é a forma mais eficiente, mas eu postei só pra demonstrar uma alternativa.

2 curtidas