`
nenyalanye_1
  • 浏览: 49311 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

面试题目

    博客分类:
  • java
阅读更多
最近面试时碰到一道需要上机的题目要我用手写出来。我当时没做出来。回家后就自己写了下。可能不是最好的,但还是我自己做出来的欢迎拍砖
题目很简单:给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
下面是我的方法

package demo;

import java.util.*;

import com.sun.org.apache.bcel.internal.generic.NEW;
public class TestClass {

	/**
	 * @param args
	 */
	//去重复字母Map
	private static Map<String, String> chMap = new HashMap<String, String>();
	//对每个字母个数进行保存Map,后面的value可以不用List改成其他类型更好(Integer)
	private static Map<String, List> countMap = new HashMap<String, List>();	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "hello wolrd wlllkdsfhksadfls?sdfls sdf.pqyutgvAAAxzsdfs lsdfj,ljsfd  ajfdsak sfksjdfisfsdkfj lsdfjsidf jsafdalsjfs sfskdfjs";		
		
		getChar(str);
		
		int chMpSize = chMap.size();		
		int countMapSize = countMap.size();		
		System.out.println("chMpSize: " + chMpSize );
		System.out.println("countMapSize: " + countMapSize );		

		System.out.println("===================开始=======================");
		String [] sArray = str.split("");
		List l = new ArrayList();		
		
		List  countArray = new ArrayList();
		for(int i=0;i<sArray.length;i++){
			//System.out.println(i + " " + sArray[i]);
			//int flag = 0;
			if(!sArray[i].equals("") && !sArray[i].equals(" ")
					  && !l.contains(sArray[i]) && !sArray[i].equals(",")
					  &&!sArray[i].equals(".") && !sArray[i].equals("!")
					  &&!sArray[i].equals("?")){
				//l.add(sArray[i]);				
				int num = countMap.get(sArray[i]).size();		
				countArray.add(num);
			
			}
		}
		
		//排序默认是升序
		Arrays.sort(countArray.toArray());
		Collections.reverse(countArray);
		//System.out.println(countArray.get(0));
		int max = Integer.parseInt(countArray.get(0)+"");
		//System.out.println("tt" + sArray.length);
		
		for(int i=0;i<sArray.length;i++){		
			if(!sArray[i].equals("") && !sArray[i].equals(" ")&& !l.contains(sArray[i])
					&& !sArray[i].equals(",") &&!sArray[i].equals(".") && !sArray[i].equals("!")
					  &&!sArray[i].equals("?")){
				l.add(sArray[i]);				
				int num = countMap.get(sArray[i]).size();	
				System.out.println("字母为: " + sArray[i] + "  次数:  " + num);
				if(countArray != null && countArray.size()!=0 && max == num){
					System.out.println("字母为: " + sArray[i] + "  最大次数  " + num);
				}
				
			}
		}
		
	
		
	}

	public static void getChar(String str){		
		//去掉空格
		String[] s = str.split(" ");		
		char [] c = null;		
		if (s != null){
			for(int i=0;i<s.length;i++){
				c = s[i].toCharArray();				
				getChar(c);
			}
		}
		
	}
	
	public static void getChar(char [] ch){
		
		if(ch != null && ch.length>0){
			for(int i=0;i<ch.length;i++){
				List list = new ArrayList();
				
				String  tmp = ch[i]+"";
				if(!tmp.equals(",") && !tmp.equals("!") 
					   && !tmp.equals("?") && !tmp.equals(".")){				
					//第一次
					if(!chMap.containsKey(ch[i]+"")){
						chMap.put(ch[i]+"", ch[i]+"");
						list.add(ch[i]);
						if(!countMap.containsKey(ch[i]+"")){
							countMap.put(""+ch[i], list);
						}
					}else{					
					    list = countMap.get(""+ch[i]);
					    list.add(ch[i]);			
						countMap.put(""+ch[i], list);			
					}
				}
			}
			
			
		}//end if	
		
	}
}


这里有几个地方需要修改 我没有做修改 估计会出现内存溢出的问题
分享到:
评论
73 楼 yfkscu 2009-12-02  
<p>一个时间复杂度为n的算法,可能代码有点多。</p>
<p>呵呵,以可读性换取代码长度,应该还是值得的。<img src="/images/smiles/icon_smile.gif" alt=""></p>
<p> </p>
<p> </p>
<pre name="code" class="java">import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

public class TestClass {

public static void main(String[] args) {
HashMap&lt;Character, Integer&gt; map = new HashMap&lt;Character, Integer&gt;();
String str = "aabbccbddeeaabbdflksajfldsjal;fjdl;skajlfdjs;lajflueiowjfldskj";
int len = str.length();
for (int i = 0; i &lt; len; i++) {
char c = str.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}

// 得到最大的出现次数
int maxValue = 0;
for (Iterator&lt;Entry&lt;Character, Integer&gt;&gt; iter = map.entrySet()
.iterator(); iter.hasNext();) {
Entry&lt;Character, Integer&gt; entry = iter.next();
int value = entry.getValue();
if (value &gt;= maxValue) {
maxValue = value;
}
}

//取出出现次数最多的字母和对应的次数
for (Iterator&lt;Entry&lt;Character, Integer&gt;&gt; iter = map.entrySet()
.iterator(); iter.hasNext();) {
Entry&lt;Character, Integer&gt; entry = iter.next();
char key = entry.getKey();
int value = entry.getValue();
if (value == maxValue) {
System.out.println("出现次数最多的字母为:" + key + "  出现次数为:" + value);
}
}

}
}</pre>
<p> 输出结果为:</p>
<p>
</p>
<p>出现次数最多的字母为:a  出现次数为:8</p>
<p>出现次数最多的字母为:l  出现次数为:8</p>
<p>出现次数最多的字母为:j  出现次数为:8</p>

<p> </p>
72 楼 hngslifeng 2009-11-29  
用数据库的方法可以解决,先每一个字母一个个插入数据库,然后按字母名称count() group by下,就知道那个字母出现次数最多了
71 楼 miaozp 2009-11-27  
<p>String str = "qqqqqaaaaa11aaxxrrrrrrr";// 需要统计的字符串<br>  char[] strchars = str.toCharArray();<br>  long maxnum = 0;// 最大出现次数<br>  Map letters = new HashMap();// 保存统计出现最多字母的集合<br>  for (int i = 0; i &lt; strchars.length; i++) {<br>   String key = strchars[i] + "";<br>   if (Character.isLetter(strchars[i])) {<br>    long beforLen = str.length();// 替换之前<br>    str = str.replaceAll(key, "");<br>    long afterLen = str.length();// 替换之后<br>    long findnum = beforLen - afterLen;// 出现次数<br>    if (maxnum &lt; findnum) {<br>     maxnum = findnum;<br>     letters.clear();// 清空集合<br>     letters.put(key, new Long(maxnum));// 记录出现最多字母<br>    } else if (maxnum == findnum &amp;&amp; letters.get(key) == null) {// 出现次数一样,并且未曾记录<br>     letters.put(key, new Long(maxnum));// 记录出现最多字母<br>    }<br>   }<br>  }<br>  Iterator it = letters.entrySet().iterator();<br>  while (it.hasNext()) {<br>   Map.Entry entry = (Map.Entry) it.next();<br>   System.out.println("字母:" + entry.getKey());<br>   System.out.println("次数:" + entry.getValue());<br>  }</p>
70 楼 miaozp 2009-11-27  
如果出现字母次数最多的是多个字母呢?
好些人把这种情况给忽略了
69 楼 zhaoyta 2009-11-26  
package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class StaticStr {

	
	public static void main(String[] args)
	{
		Map<Character,Integer> map = new TreeMap<Character,Integer>(new CharComparator());
		String str = "abbcAAAZZ.x.m .. .fdZZxxaaaaZ";
		List<Compound> result = new ArrayList<Compound>();
		char[] chararr = str.toCharArray();
		for(int i=0;i<chararr.length;i++)
		{
			if(!(chararr[i] >='A' && chararr[i] <='Z')&&!(chararr[i] >='a' && chararr[i] <='z')) continue;
			Integer num = (Integer)map.get(chararr[i]);
			if(num==null)
			{
				map.put(chararr[i], 1);
			}else
			{
				num++;
				map.put(chararr[i], num);
			}
		}
		
		Set<Map.Entry<Character,Integer>> set = map.entrySet();
		for(Map.Entry entry:set)
		{
			Compound c = new Compound();
			c.key = (Character) entry.getKey();
			c.value = (Integer) entry.getValue();
			result.add(c);
		}
		
		Collections.sort(result);
		Compound maxChar = result.get(0);
		int maxNum = maxChar.value;
		int i = 0;
		do{
			i++;
			System.out.println("Max num char:"+maxChar.key+" count:"+maxChar.value);
		}while(( maxChar = result.get(i))!=null&&maxChar.value==maxNum);
		
	}
	
	public  static final class CharComparator implements Comparator<Character>
	{

		public int compare(Character o1, Character o2) {
			char v1 = o1;
			char v2 =o2;
			if(v1==v2)
				return 0;
			else if(v1<v2)
				return 1;
			else
				return -1;
		}
		
	}
	
	public static final class Compound implements Comparable<Compound>
	{
		private char key;
		
		private int value;

		public int compareTo(Compound o) {
			if(this.value>o.value)
				return -1;
			else if(this.value==o.value)
				return 0;
			else
				return 1;
		}
		
		
	}
	
}
68 楼 weiqiang.yang 2009-11-17  
路过,我觉得是不是真的有必要上Map,List之类的容器
A-Z a-z就52个字符

public static void main(String[] args) {
        int max = 0;// 记录最多次数
        int count[] = new int[52];// 开个52的数组
        String input = "abbcAAAZZ.x.m .. .fdZZxxaaaaZ";
        for(int i=0;i<input.length();i++){
            int index = 0;
            char letter = input.charAt(i);
            if(letter >='A' && letter <='Z'){
                index = letter - 'A';
            }else if(letter >='a' && letter <='z'){
                index = letter - 'a' + 26;
            }else{// 其他字符
                continue;
            }
            count[index]++;
            if(count[index] > max){
                max = count[index];
            }
        }
        // 最多的可能有多个,于是循环一下
        for(int j=0;j<count.length;j++){
            if(count[j] == max)
                System.out.println("max = "+max+", maxLetter = "+ (j<26?(char)('A'+j):(char)('a'+j-26)));
        }
    }
67 楼 zhzhxiqi 2009-09-20  
lczheng 写道
楼上实现的过于复杂了,贴一段我的实现,请各位拍砖:
public static void main(String[] args) {	
		Map<String,Long> charTimesMap = new HashMap<String,Long>();
		
		String str = "hello wolrd wlllkdsfhksadfls?sdfls sdf.pqyutgvAAAxzsdfs lsdfj,ljsfd  ajfdsak sfksjdfisfsdkfj lsdfjsidf jsafdalsjfs sfskdfjs"; 
		for (char each : str.toCharArray()) {
			if ((each >= 65 && each <= 90) || (each >= 97 && each <= 122)) {
				String charStr = String.valueOf(each);
				if (charTimesMap.containsKey(charStr)) {
					Long num = charTimesMap.get(charStr).longValue() + 1;
					charTimesMap.put(charStr, num);
				} else {
					charTimesMap.put(charStr, 1L);
				}
			}
		}
		
		String maxAppearChar = null;
		Long maxAppearTimes = 0L;
		for (Map.Entry<String, Long> charAppear : charTimesMap.entrySet()) {
			if (charAppear.getValue() > maxAppearTimes) {
				maxAppearChar = charAppear.getKey();
				maxAppearTimes = charAppear.getValue();
			}
		}
		System.out.println("出现最多的字母:"+maxAppearChar);
		System.out.println("出现次数:"+maxAppearTimes);
	}


一个问题,当有两或两个以上的字母出现的次数都是最大的时候,你这段代码只能找到一个,其他的结果都丢了。
66 楼 凤舞凰扬 2009-09-07  
   楼主好像没有说这是算法题,不是考编程吧?从楼主的帖子你也可以看得出啊!理解面试中对于笔试的要求是非常重要的(如果只是考算法,用这样的题目就未免太简单了吧,呵呵)。我都不清楚楼上如何得出个这样的结论的.......
   至于说,在笔试题中使用了Collections就得BS,怕是楼上你的误区吧。如果是考编程题目,也就是考你基础应用编程的能力(一个有一些开发经验的程序员和完全没有开发经验的学生,差距就是在这里了),公司需要的更倾向的是能够应用的程序员,而不是一套套算法理论的学生的。
   最后给楼上总结下:
  1. 如果公司想考算法,想了解思维能力,绝对不会用这么简单的题目,起码也得弄个和高程(现在好像叫软件设计师吧)差不多水平的说。至少也要高过学校所学的。
  2. 这样的题目一般也会明确使用某种特定的语言的(当然我假设java),否则,程序写出来,考官未必都能够准确评分。
  3. 对于这样的笔试题,请一定从简单入手,不要整得那么复杂,也别想得那么复杂。笔试从来只是入门坎,而不是评优。
  
65 楼 rabbitbug 2009-09-04  
这是算法题,不是java题,当然你可以用java写
如果用到Collections类的方法,那要被面试管BS的,一般就是理解错了这个题目的意思,如果要考Collections类的方法,就会考更复杂的问题了
这种算法题要用最简单的方法实现,占空间少,执行越快越好
如果循环肯定也是要BS的
这个算法只要O(n)就行了
64 楼 凤舞凰扬 2009-08-26  
   楼上的想法还是不错,有新意。反正ASCII字符也就最多255个,数组每个下标对应该字符出现的值。
   p.s 不过这个biggestCount的取名有些意思~~~~
63 楼 Bernard 2009-08-26  
 String str = "hello wolrd wlllkdsfhksadfls?sdfls sdf.pqyutgvAAAxzsdfs " +
                "lsdfj,ljsfd  ajfdsak sfksjdfisfsdkfj lsdfjsidf jsafdalsjfs sfskdfjs";
        int[] strCounts = new int[255];
        int biggestCount = 0;
        char biggestCh = 0;
        char ch = 0;
        int currentCount = 0;
        for (int i = str.length() - 1; i >= 0; i--) {
            ch = str.charAt(i);
            currentCount = ++strCounts[ch];
            if (currentCount > biggestCount) {
                biggestCount = currentCount;
                biggestCh = ch;
            }
        }
        System.out.println(biggestCh);
        System.out.println(biggestCount);
        /**
         * 100,000
         * 295
         * 239
         * 265
         */

笔试的话这几句不算多吧。
62 楼 凤舞凰扬 2009-08-26  
ww_java 写道
凤舞凰扬 写道
      看完楼上各位童鞋的回帖,简直要崩溃了~~~~~~~
      我估计没有几个人搞懂了面试官究竟是想考什么,楼上各位如果可以在笔试阶段画上15分钟把你们的代码用纸笔写出来,我真还服了你们了。
       哎...........



我估计你要佩服了,我看表的,6分钟用editplus写出来了.

你说的你的观点,其实代码行数是差不多的,

   特地回去看了你的代码,没有前面那些人复杂,确实可以在6分钟内写出来。不过要我让我佩服,那就真不好意思了。我是考官只能给你70分。
    对这种题目,我贴出个广大童鞋可以在3分钟内写出的代码(首先不考虑一些异常的控制,比如传空字符串等,这只是为了减少一些干扰),同时也让ww_java看看,两种代码的差别吧
<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class ClassA {
	private Map<Character, Integer> getToken(String str) {
		Map<Character, Integer> token = new LinkedHashMap<Character, Integer>();
		for (int i = 0; i < str.length(); i++) {
			if (token.get(str.charAt(i)) != null) {
				token.put(str.charAt(i), token.get(str.charAt(i)) + 1);
			} else {
				token.put(str.charAt(i), 1);
			}
		}
		return token;
	}
	
	
	public void print(String str, boolean print) {
		Map<Character ,Integer> token = getToken(str) ; 
		Iterator<Character> iterator = token.keySet().iterator(); 
		int max = Collections.max(token.values()); 
		while(iterator.hasNext()){ 
			Character c = iterator.next(); 
			if(token.get(c).compareTo(max) == 0){
				if (print) {
					System.out.println(c +" = "+token.get(c));
				}
			}
		}
	}
	
	public void print2(String s, boolean print) {
		char[] chars = s.toCharArray();
		Arrays.sort(chars);
		int i = 0 ;
		int maxCount = 0 ;
		char maxChar = ' ';
		char last = ' ';
		for (char c : chars) {
			if (last != c) {
				if (i > maxCount) {
					maxCount = i ;
					maxChar = last ;
				}
				last = c ;
				i = 0 ;
			}
			i ++ ;
		}
		if (print) {
			System.out.println(maxChar + " = "+ maxCount);
		}
	}
	
	public static void main(String[] args) {
		String s = "jdkfjw,.oeto,.34utkgf.syf9w ,e7r23, haerhyqbkbwkhjgosu9asuf9qojekogtjalugf9qu7r13htfn";
		ClassA a = new ClassA();
		a.print(s, true);
		System.out.println("--------------------");
		a.print2(s, true);
		long start = System.currentTimeMillis() ;
		for (int i = 0; i < 10000; i++) {
			a.print(s, false);
		}
		long end = System.currentTimeMillis() ;
		System.out.println("execute print method cost: "+(end - start));

		start = System.currentTimeMillis() ;
		for (int i = 0; i < 10000; i++) {
			a.print2(s, false);
		}
		end = System.currentTimeMillis() ;
		System.out.println("execute print2 method cost: "+(end - start));
	}
}

   得到的结果是
f = 6
--------------------
f = 6
execute print method cost: 328
execute print2 method cost: 94

    采用print2的速度要比print方法快了4倍。其实如果随着字符串的长度越长,速度的差别会更加明显。当然,我也并不是说这是什么最佳不最佳,速度的差别只是考虑的一个方面,没有必要纠缠是否还可以继续优化那么一点点。 各位童鞋好好从程序本身的复杂度来看看这两个方法吧。即使说不准用Arrays.sort方法,无非也就是多加一个快速排序(不会超过十分钟),而在print方法中我们也可以看到类似的Collections.max方法。
    其实这是一个简单的笔试题,希望大家能清楚,凡事笔试的,都不会太复杂或者繁琐,它考察的点究竟在哪里。
61 楼 ww_java 2009-08-25  
凤舞凰扬 写道
      看完楼上各位童鞋的回帖,简直要崩溃了~~~~~~~
      我估计没有几个人搞懂了面试官究竟是想考什么,楼上各位如果可以在笔试阶段画上15分钟把你们的代码用纸笔写出来,我真还服了你们了。
       哎...........



我估计你要佩服了,我看表的,6分钟用editplus写出来了.

你说的你的观点,其实代码行数是差不多的,
60 楼 凤舞凰扬 2009-08-24  
      看完楼上各位童鞋的回帖,简直要崩溃了~~~~~~~
      我估计没有几个人搞懂了面试官究竟是想考什么,楼上各位如果可以在笔试阶段画上15分钟把你们的代码用纸笔写出来,我真还服了你们了。
       哎...........
59 楼 凤舞凰扬 2009-08-24  
   天啦,楼主这样写啊,这是笔试题哦,如果答案是这样,考官都郁闷死了,谁会去看呢?
   这样的题目其实非常简单啊~~~先对字符串的内容排序(也可以变成字符数组排序),然后循环一下就可以了啊!
   只需要保留一个int变量保存上一个不同字符出现的个数就可以了。(如果考手写,使用commons-lang其实不太可能的)
   各位童鞋啊,如果笔试遇到这类问题,而且还是手写的,尽量往简单的想!
58 楼 balan326 2009-08-24  
你们是学JAVA的也,一点OOP的思想都没有,
57 楼 balan326 2009-08-24  
yenan354 写道
姐姐,发代码的时候请用[1code=1"1java1"][/1code1]括起来
test方法中的第一个for 循环的最后一句有逻辑错误。我在你的基础上修改了一下,同时也支持多个字符相同的情况。 (我晕死,你不看下方法就乱说我错误,我的setNum方法里怎么写的你没看到哦,我是写的this.num+=num,看人家的代码也不看仔细,每个人写代码的习惯不同好不好,)
	public void test(String str) {
		List list = new ArrayList();
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			StrObject so = new StrObject();
			so.setName(c);
			so.setNum(1);
			StrObject s = getObject(list, so);
			if (s == null)
				list.add(so);
			else
				s.setNum(s.getNum() + 1);
		}
		StrObject strObject = null;
		Vector v = new Vector();
		for (int i = 0; i < list.size() - 1; i++) {
			if (strObject == null) {
				strObject = (StrObject) list.get(i);
				v.add(strObject);
				continue;
			}
			StrObject so = (StrObject) list.get(i);
			if (so.getNum() > strObject.getNum()){
				strObject = so;
				v.clear();
				v.add(so);
			}
			if (so.getNum() == strObject.getNum()){
				v.add(so);
			}
		}
		Iterator it = v.iterator();
		while(it.hasNext()){
			strObject = (StrObject)it.next();
			System.out.println("出现次数最多的:" + strObject.getName() + "  数量:"
				+ strObject.getNum());
		}
		
	}










56 楼 zhuzhu1124 2009-08-22  
//简单实现了一下楼上的

import java.util.*;
public class Count {
    public static void main(String[] args) {
String str =  "hello wolrd wlllkdsfhksadfls?sdfls sdf.pqyutgvAAAxzsdfs lsdfj,ljsfd  ajfdsak sfksjdfisfsdkfj lsdfjsidf jsafdalsjfs sfskdfjs";
Map<Character,Integer> charMap = new HashMap<Character,Integer>();
for(char each : str.toCharArray()) {
if(charMap.containsKey(each)) {
charMap.put(each,charMap.get(each) + 1);
}else {
charMap.put(each,1);
}
}

Set set =charMap.keySet();   ///获得KEY
        Collection coll = charMap.values();  ///获得VALUE

        Iterator it = coll.iterator();  
        Iterator its = set.iterator();  
        while(it.hasNext())  
        {  
            System.out.println(its.next()+" :"+it.next());  
        }  
}
}
55 楼 yenan354 2009-08-22  
姐姐,发代码的时候请用[1code=1"1java1"][/1code1]括起来
test方法中的第一个for 循环的最后一句有逻辑错误。我在你的基础上修改了一下,同时也支持多个字符相同的情况。
	public void test(String str) {
		List list = new ArrayList();
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			StrObject so = new StrObject();
			so.setName(c);
			so.setNum(1);
			StrObject s = getObject(list, so);
			if (s == null)
				list.add(so);
			else
				s.setNum(s.getNum() + 1);
		}
		StrObject strObject = null;
		Vector v = new Vector();
		for (int i = 0; i < list.size() - 1; i++) {
			if (strObject == null) {
				strObject = (StrObject) list.get(i);
				v.add(strObject);
				continue;
			}
			StrObject so = (StrObject) list.get(i);
			if (so.getNum() > strObject.getNum()){
				strObject = so;
				v.clear();
				v.add(so);
			}
			if (so.getNum() == strObject.getNum()){
				v.add(so);
			}
		}
		Iterator it = v.iterator();
		while(it.hasNext()){
			strObject = (StrObject)it.next();
			System.out.println("出现次数最多的:" + strObject.getName() + "  数量:"
				+ strObject.getNum());
		}
		
	}
54 楼 balan326 2009-08-21  
用JAVA写,当然要用OOP的思想了,
/*******************************************************
实体类
package Str;

public class StrObject
{
private char name;

private int num;


/**
* @return the name
*/
public char getName() {
return name;
}

/**
* @param name the name to set
*/
public void setName(char name) {
this.name = name;
}

/**
* @return the num
*/
public int getNum() {
return num;
}

/**
* @param num the num to set
*/
public void setNum(int num) {
this.num += num;
}


}
/*************************************************************************
/*************************************************************************
主类
package Str;

import java.util.*;



public class Test
{
public static void main(String[] args)
{
String str = "asdfasd asdfwe.asdfasd,erytkcvm,drty  sdflkjgsdyvv5458sdgf 454df21f455asdf2r";
Test test = new Test();
test.test(str);
}

public void test(String str)
{
List list = new ArrayList();
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
StrObject so = new StrObject();
so.setName(c);
so.setNum(1);
StrObject s = getObject(list, so);
if(s == null)
list.add(so);
else
s.setNum(1);
}
StrObject strObject = null;
for (int i = 0; i < list.size()-1; i++)
{
if(strObject == null)
{
strObject = (StrObject) list.get(i);
continue;
}
StrObject so = (StrObject) list.get(i);
if(so.getNum() > strObject.getNum())
strObject = so;
}
System.out.println("出现次数最多的:"+strObject.getName()+"  数量:"+strObject.getNum());
}

public StrObject getObject(List list,StrObject so)
{
for (int i = 0; i < list.size(); i++)
{
StrObject s = (StrObject) list.get(i);
if(s.getName() == so.getName())
return s;
else
continue;
}
return null;
}
}
/********************************************************************************

相关推荐

Global site tag (gtag.js) - Google Analytics