sinat_35322478 2016-07-16 14:57 采纳率: 0%
浏览 1867

找出字符串中重复次数最多的字符及最少的,帮忙看一下我代码的问题

public class A5 {
//定义一个数组,存储次数,数组长度为字符串长度,找出一个字符与每一个都比较,并计数,找出下标次数出现最多的,求其最大值
public static void main(String[]args){
String a1="abasdcalsjdfasf34asfjsfasf";
int[]counts=new int[a1.length()];
for(int i=0;i<a1.length();i++){
char x1=a1.charAt(i);//拿出字符串中一个字符;
int count=0;

for(int j=0;j<a1.length();j++){
char x2=a1.charAt(j);//拿出字符串中一个字符与第一个字符比较。
    if(x1==x2){
    count++;

        }
    }
counts[i]=count;//计数每次出现的次数放到数组counts中;

//System.out.print(counts[i]);

}
int xiabiao1=0;
int max=counts[0];
for(int i=0;i<counts.length;i++){
   if(counts[i]>max){
       max = counts[i];//找出出现最大次数的,并把下标找出。
       xiabiao1=i;
         }
     }

char str=a1.charAt(xiabiao1);//通过下标找内容.
System.out.println("出现次数最多的字符为"+str+",次数最大为"+max);

for(int j=0;j<counts.length;j++){
if(max==counts[j] && str!=a1.charAt(j)){
     max=counts[j];  
       str =a1.charAt(j); 
       continue;
    }

}
System.out.println("出现次数最多的字符为"+str+",次数最大为"+max);
int xiabiao2=0;
int min=counts[0];
for(int i=0;i<counts.length;i++){
   if(counts[i]<min){
 min =counts[i];
  xiabiao2=i;
   }
}

char str1=a1.charAt(xiabiao2);
System.out.println("出现次数最少的字符为"+str1+",次数最少为"+min);
for(int i=0;i<counts.length;i++){
if(counts[i]==min && str1!=a1.charAt(i)){
counts[i]=min;
str1=a1.charAt(i);
continue;
    }

}
System.out.println("出现次数最少的字符为"+str1+",次数最少为"+min);

}
}

  • 写回答

1条回答

  • qq_15953409 2016-07-16 15:24
    关注

    很明显啊,对于存在个数一样多的情况,你没有关注

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题