`
nenyalanye_1
  • 浏览: 50226 次
  • 性别: 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;
}
}
/********************************************************************************

相关推荐

    [消防文员面试题目]消防面试题目.pdf

    [消防文员面试题目]消防面试题目.pdf

    Java常见笔试_面试题目深度剖析

    Java常见笔试_面试题目深度剖析

    Java常见笔试、面试题目深度剖析

    这份资源"Java常见笔试、面试题目深度剖析"显然是为了帮助求职者更好地准备相关考试而设计的。以下将对Java笔试和面试的一些核心知识点进行详细的阐述: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、...

    ios 面试题目及答案

    标题 "iOS 面试题目及答案" 指出了文件内容主要围绕iOS开发相关的面试题目和答案展开,覆盖了iOS开发中的一些核心概念和技术点。描述部分说明这些面试题目非常全面,涉及了Objective-C、Cocoa Touch以及Xcode的使用...

    Java常见笔试,面试题目深度剖析

    Java常见笔试,面试题目深度剖析

    数通HCIE RS面试题目解析

    数通HCIE RS面试题目解析 在计算机网络领域,HCIE(Huawei Certified Internetwork Expert)是华为公司推出的认证项目之一,旨在评估网络工程师的技术能力和实践经验。HCIE RS( Routing and Switching)是HCIE认证...

    中秋节当天德赛西威机械面试经验分享机械面试题目汇总必备复习题

    部分面试题目如下: 自我介绍 成绩排名简单介绍 项目介绍:最难的地方,创新点 最有压力的时候,如何处理 英语水平 对德赛西威的认识 如何看待卷 如何看待加班 ### 德赛西威面试经历分享 德赛西威作为一家知名的...

    asp.net上海面试题目(经典)

    本压缩包包含的“ASP.NET上海面试题目(经典)”资料,提供了130道面试题目,涵盖了ASP.NET、SQL Server等关键知识点,对于准备在上海地区寻求ASP.NET相关工作的求职者来说,具有很高的参考价值。 以下是部分题目...

    大公司C++面试题目集锦

    这份"大公司C++面试题目集锦"包含的两份文档——"c++试题(1).doc"和"c++试题(2).doc",无疑是帮助你巩固知识、提升技能的关键资源。以下是基于这些文件可能涵盖的一些重要知识点的详细解析: 1. **基础语法**:...

    面试题目_cc++面试-----17道经典编程题目分析

    "C++面试题目分析" 本文档提供了17道经典的C++面试题目,涵盖了C++语言的各种基础语法和算法,包括字符串处理、数字处理、数组处理等。每个题目都提供了详细的解释和参考答案,旨在帮助读者更好地理解C++语言的实现...

    华为计算机公司的面试题目

    华为公司作为全球知名的IT巨头,其面试题目往往涵盖了计算机科学和技术的多个领域,旨在测试应聘者的综合素质和专业技能。从提供的文件名来看,我们可以推测这些面试题目可能涉及到算法、技术支持以及可能的一些行业...

    2018最新BAT+面试题目

    【标题】:“2018最新BAT+面试题目”涵盖了中国顶级互联网公司——百度(Baidu)、阿里巴巴(Alibaba)和腾讯(Tencent)在2018年招聘过程中的热门面试问题。这些题目旨在测试候选人在技术、逻辑思维、问题解决以及...

    广电面试题目.pdf

    "广电面试题目.pdf" 本资源文件提供了面试题目和答案,涵盖了客服人员的知识点和技能要求。下面是对标题、描述、标签和部分内容的详细解释和知识点总结: 客服人员基本素质 1. 热爱企业,热爱岗位 2. 热情主动的...

    Windchill常见面试题目汇总.docx

    **Windchill常见面试题目汇总** Windchill是一款由PTC公司开发的基于Web的企业产品生命周期管理(PLM)系统,主要用于产品数据管理和协同工作。它涵盖了产品设计、工程、制造、服务等整个生命周期,旨在提高产品的...

    世界500强面试题目及评点

    《世界500强面试题目及评点》是两份重要的资源,主要针对那些渴望进入全球顶级企业工作的人群。这些公司通常会设置独特的面试环节,以全面评估候选人的综合素质和专业技能。以下是对这两部分内容的详细解读。 在500...

    c++面试题目题目集合 完美的笔试面试

    本资料包“c++面试题目题目集合 完美的笔试面试”包含了丰富的C++面试题,旨在帮助求职者提升应对笔试和面试的能力。 一、C++基础 1. **变量与数据类型**:理解基本数据类型(如int, float, double, char)以及...

    后备干部面试题目.doc

    以下是对这些面试题目的知识点解析: 1. 自我介绍: - 强调个人基本信息,包括姓名、经历、思想动态、特长和爱好,这有助于面试官了解候选人的背景和性格特点。 - 报考动机和工作设想,展示候选人对职位的理解和...

    数据结构 面试 题目

    ### 数据结构面试题目解析 1. **题目一**:“链表与数组的不同之处” - 数组是顺序存储的,访问时间复杂度为O(1),但插入删除操作可能需要移动大量元素,时间复杂度为O(n)。 - 链表是链式存储,访问时间复杂度为O...

Global site tag (gtag.js) - Google Analytics