java中字符串出现次数

本文介绍了一种使用Java编程语言来查找给定字符串中出现频率最高的字母的方法。通过将字符串转换为字符数组并利用ArrayList进行排序和去重,最终确定出现次数最多的字母及其出现次数。

记下自己写的代码,可能比较拙略,但是是自己辛苦劳动的结果。

题目:有一个字符串String="adadfdfseffserfefseetsdg",找出里面出现次数最多的字母及其出现的次数。

思路:

  1. 将字符串中的字符取出来,保存在字符数组中
  2. 将数组中的数据放在ArrayList当中,并进行自然排序
  3. 声明一个新的Arraylist
  4. 将不重复的元素放进新的链表中
  5. 用两个链表进行判断

代码:

package njupt.cn;

import java.util.ArrayList;
import java.util.Collections;

public class four {
    public static void main(String[]args){
        String input="adadfdfseffserfefseetsdg";
        char[] chars = input.toCharArray();
        
        String[] s=new String[chars.length];
        for(int j=0;j<chars.length;j++){
            s[j]=Character.toString(chars[j]);
            
        }
        ArrayList<String> list=new ArrayList<String>(chars.length);
        for(int i=0;i<s.length;i++){
            list.add(s[i]);
            
        }
        System.out.println(list);
        
        //paixu
        Collections.sort(list);
        
        System.out.println(list);
        ArrayList as=new ArrayList();
        
        for(int k=0;k<list.size();k++){
            if(!as.contains(list.get(k))){
                as.add(list.get(k));
                System.out.println(as);
                
            }
                
            }
        int[] n=new int[as.size()];
        for(int j=0;j<as.size();j++){
            int begin=list.indexOf(as.get(j));
            int last=list.lastIndexOf(as.get(j));
            int num=last-begin+1;
            System.out.println("num="+num);
            n[j]=num;
            System.out.println("n="+n[j]);
            
            
        }
        int max=0;
        int m=0;
        for(int i=0;i<n.length;i++){
            if(n[i]>max){
                 max=n[i];
                 m=i;
                
            }
            
            
        }    
        
         System.out.println("max="+max);
         System.out.print("m="+m+"\n");
         System.out.println("max="+max+";the string is:"+as.get(m));
        }
    
        
}

结果:

[a, d, a, d, f, d, f, s, e, f, f, s, e, r, f, e, f, s, e, e, t, s, d, g]
[a, a, d, d, d, d, e, e, e, e, e, f, f, f, f, f, f, g, r, s, s, s, s, t]
[a]
[a, d]
[a, d, e]
[a, d, e, f]
[a, d, e, f, g]
[a, d, e, f, g, r]
[a, d, e, f, g, r, s]
[a, d, e, f, g, r, s, t]
num=2
n=2
num=4
n=4
num=5
n=5
num=6
n=6
num=1
n=1
num=1
n=1
num=4
n=4
num=1
n=1
max=6
m=3
max=6the string is:f

我貌似将排序的重复的ArrayList类变成了具有set类性质的队列。

我是新手,不会很多的简单的算法,或许哪天我也是大牛了,就能写简短的代码实现复杂的功能了,(*^__^*) 嘻嘻……

 

 

     

转载于:https://www.cnblogs.com/wqily/archive/2012/09/08/2676866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值