java中字符串出现次数

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

题目:有一个字符串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类性质的队列。

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

 

 

     

posted @ 2012-09-08 17:52  qqhegg  阅读(419)  评论(0编辑  收藏  举报