如何数string里的字母数量多少
如何数string里的字母数量比如说一个string是“similar", 我要找出出现次数最多的字母,也就是i,请问这样的程序怎么写
这是我自己写的, 但是每次输出都是最后一个字母,怎么回事呢? 大家帮我改改
public char mostFrequent()
{
int position, count=0, i=0, j=0,k=0;
int maxCount=0;
char frequent='a';
char[] nameArray;
line=line.toLowerCase();
nameArray=line.toCharArray();
for (; k<line.length(); k++)
{
position=line.indexOf(nameArray[i]);
count++;
while (position !=-1)
{
position=line.indexOf(nameArray[i],position+1);
count++;
if (count>maxCount)
{
maxCount=count;
j=i;
frequent=nameArray[j];
}
}
count=0;
i++;
}
return frequent;
}
[ 本帖最后由 suckdog 于 2009-10-27 10:19 编辑 ]
----------------解决方案--------------------------------------------------------
刚自己做了个,仅供参考
package test;
public class MyCount {
public static void main(String[] args) {
int maxCount=0;
char maxChar='a';
String str="similar";
char ch11;
char ch12;
int l;
int p;
for(int i=0;i<str.length();i++){
int count=0;
String str1=str.toLowerCase();
char[] cha=str1.toCharArray();
int t=0;l=0;p=1;
for(;t<str.length();t++){
ch11=cha[i];
ch12=str1.substring(l, p).toLowerCase().charAt(0);
if(ch11==ch12){
count++;
}
l++;p++;
}
if(count>maxCount){
maxCount=count;
maxChar=cha[i];
}
}
System.out.println("出现最多的字母是--->"+maxChar+" "+maxCount+"次");
}
}
----------------解决方案--------------------------------------------------------
我写的和你差不多,为什么会瘫痪
public int mostFrequent()
{
int count=0;
int maxCount=0;
char frequent='a';
char[] nameArray;
char one, two;
int l=0, p=1;
String str1=line.toLowerCase();
nameArray=str1.toCharArray();
for(int i=0; i<line.length(); i++)
{
for(int t=0; t<line.length(); t++)
{
one=nameArray[i];
two=str1.substring(l, p).toLowerCase().charAt(0);
if(one==two)
count++;
l++;
p++;
}
if(count>maxCount)
{
maxCount=count;
frequent=nameArray[i];
}
}
return maxCount;
}
----------------解决方案--------------------------------------------------------
你的问题出在count--->一直都在加
for(int i=0; i<line.length(); i++)
{
int count=0; //放这里。外循环第(2、3、4、5....)次的时候重新统计
----------------解决方案--------------------------------------------------------