java中字符串出现次数
记下自己写的代码,可能比较拙略,但是是自己辛苦劳动的结果。
题目:有一个字符串String="adadfdfseffserfefseetsdg",找出里面出现次数最多的字母及其出现的次数。
思路:
- 将字符串中的字符取出来,保存在字符数组中
- 将数组中的数据放在ArrayList当中,并进行自然排序
- 声明一个新的Arraylist
- 将不重复的元素放进新的链表中
- 用两个链表进行判断
代码:
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类性质的队列。
我是新手,不会很多的简单的算法,或许哪天我也是大牛了,就能写简短的代码实现复杂的功能了,(*^__^*) 嘻嘻……
送给今天努力的我
-------小美