FelipePJ 12 de abr. de 2004
tenta isso:
public int contaLetra ( String str , char letra ) {
int count = 0 ;
int x ;
while (( x = str .indexOf ( letra + "" )) != - 1 ) {
str = str .substring ( x + 1 ) ;
}
return count ;
}
JavaTecoPJ 12 de abr. de 2004
Uma outra solução:
public static int contaCaractere ( String s , char c ) {
int contador = 0 ;
char [] palavra = s . toCharArray ();
for ( int indice = 0 ; indice < palavra . length ; indice ++ ) {
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
}
return contador ;
}
enderson_andradePJ 12 de abr. de 2004
Valeu pela ajuda pessoal!!
Não imaginava que viria tão depressa!!!
abs…
e_andrade
FelipePJ 12 de abr. de 2004
“JavaTeco”:
Uma outra solução:
public static int contaCaractere ( String s , char c ) {
int contador = 0 ;
char [] palavra = s . toCharArray ();
for ( int indice = 0 ; indice < palavra . length ; indice ++ ) {
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
}
return contador ;
}
fica mais rapido se vc trocar essa parte:
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
por isto:
if ( palavra [ indice ] == c ) contador ++ ;
pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias
JavaTecoPJ 13 de abr. de 2004
“Felipe”:
“JavaTeco”:
Uma outra solução:
public static int contaCaractere ( String s , char c ) {
int contador = 0 ;
char [] palavra = s . toCharArray ();
for ( int indice = 0 ; indice < palavra . length ; indice ++ ) {
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
}
return contador ;
}
fica mais rapido se vc trocar essa parte:
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
por isto:
if ( palavra [ indice ] == c ) contador ++ ;
pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias
Vc tem razão… fiz na correria… mas então melhorei mais um pouco, e adicionei sua proposta:
public static int contaCaractere ( String s , char c ) {
int contador = 0 ;
for ( int indice = 0 ; indice < s.length(); indice++) {
if ( s .charAt ( indice ) == c ) contador ++ ;
}
return contador ;
}
Assim fica melhor ainda… hehehehehehehhe
FelipePJ 13 de abr. de 2004
“JavaTeco”:
“Felipe”:
“JavaTeco”:
Uma outra solução:
public static int contaCaractere ( String s , char c ) {
int contador = 0 ;
char [] palavra = s . toCharArray ();
for ( int indice = 0 ; indice < palavra . length ; indice ++ ) {
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
}
return contador ;
}
fica mais rapido se vc trocar essa parte:
contador += ( palavra [ indice ] == c ) ? 1 : 0 ;
por isto:
if ( palavra [ indice ] == c ) contador ++ ;
pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias
Vc tem razão… fiz na correria… mas então melhorei mais um pouco, e adicionei sua proposta:
public static int contaCaractere ( String s , char c ) {
int contador = 0 ;
for ( int indice = 0 ; indice < s.length(); indice++) {
if ( s .charAt ( indice ) == c ) contador ++ ;
}
return contador ;
}
Assim fica melhor ainda… hehehehehehehhe
com o array de char fica mais rapido, apesar de gastar um pouco mais de memoria, evita MUITAS chamadas de metodo, teve um prog q eu fiz uma vez, q ele contava qntas linhas tinha um texto (qntos caracteres ‘\n’), dai da primeira vez botei desse jeito… com um arquivo de 13kb, leva um 30 a 40 segundos pra contar as linhas, depois alterei o prog pra como eu postei, pra calcular as linhas do mesmo arquivo de 13kb, foi instantaneo 8O
JavaTecoPJ 13 de abr. de 2004
Legal saber disso… Valeu mesmo…