Em Java, há uma maneira de verificar a condição:
"Esse caractere único aparece na string x"
sem usar um loop?
java
validation
string
character
barfoon
fonte
fonte
Respostas:
Você pode usar
string.indexOf('a')
.Se o caractere
a
estiver presente emstring
:fonte
indexOf()
usam loop internamente. Nenhuma das respostas fornece a solução correta e, se alguém se atreve a fazer uma nova pergunta, as pessoas a declaramDuplicate
. Realmente decepcionante; (String.contains()
que verifica se a sequência contém uma sequência especificada de valores de caracteresString.indexOf()
que retorna o índice dentro da string da primeira ocorrência do caractere ou substring especificado (há 4 variações desse método)fonte
String.contains(""+c)
Não sei exatamente o que o pôster original está perguntando exatamente. Como indexOf (...) e contém (...) provavelmente usam loops internamente, talvez ele esteja olhando para ver se isso é possível sem um loop? Eu posso pensar em duas maneiras fora de mão, uma seria, naturalmente, a recorrência:
O outro é muito menos elegante, mas completo ...:
O número de linhas cresce à medida que você precisa para suportar seqüências cada vez maiores, é claro. Mas não há loops / recorrências. Você pode até remover a verificação de comprimento se estiver preocupado com o fato de que esse comprimento () use um loop.
fonte
fonte
Você pode usar 2 métodos da
String
classe.String.contains()
que verifica se a sequência contém uma sequência especificada de valores de caracteresString.indexOf()
que retorna o índice dentro da string da primeira ocorrência do caractere ou substring especificado ou retorna -1 se o caractere não for encontrado (existem 4 variações desse método)Método 1:
Método 2:
Links de: Zach Scrivena
fonte
Para verificar se algo não existe em uma sequência, você precisa pelo menos observar cada caractere em uma sequência. Portanto, mesmo se você não usar explicitamente um loop, ele terá a mesma eficiência. Dito isto, você pode tentar usar str.contains ("" + char).
fonte
Se você precisar verificar a mesma sequência com frequência, poderá calcular as ocorrências de caracteres antecipadamente. Esta é uma implementação que usa uma matriz de bits contida em uma matriz longa:
fonte
Sim, usando o método indexOf () na classe de sequência. Consulte a documentação da API para este método
fonte
fonte
for
não é um loop agora?Resultado
fonte
fonte
}
fonte
Abaixo está o que você estava procurando?
fonte
&& string.lastIndexOf(character) != index
Você não poderá verificar se char aparece em alguma string sem pelo menos passar por cima da string uma vez usando loop / recursão (os métodos internos como indexOf também usam um loop)
Se não. Às vezes, você consulta se um caractere está na string x é muito mais do que o comprimento da string do que eu recomendaria usar uma estrutura de dados Set , pois isso seria mais eficiente do que simplesmente usar
indexOf
Usando set, você poderá verificar se o caractere existe em uma string em tempo constante O (1), mas também usará memória adicional (a complexidade do espaço será O (n)).
fonte
Eu usei o método string.includes () para isso, que retorna true ou false se a string ou o caractere for encontrado. Veja a documentação abaixo.
https://www.w3schools.com/jsref/jsref_includes.asp
fonte
// isso é apenas o principal ... você pode usar um leitor ou scanner com buffer
fonte