`
nenyalanye_1
  • 浏览: 50717 次
  • 性别: 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	
		
	}
}


这里有几个地方需要修改 我没有做修改 估计会出现内存溢出的问题
分享到:
评论
13 楼 ywlqi 2009-07-30  
public static void main(String[] args){
		String s = "wklegja;sdfijwekhiopw2903l;k/adddddddddddddddfeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedbdfsaaaaaaaskldfjpoewgna/'eaegjafdjskl;";
		
		s  = s.replaceAll("[^a-zA-Z]",""); 
		
		String ss = null;
		String _str  = null;
		int _i = 0;
		for(int i = s.length();i>=1;i=s.length()){
			ss = s.substring(0,1);
			s = s.replaceAll(ss, "");
			if(_i<i-s.length()){
				_i = i-s.length();
				_str  = ss;
			}
		}
		
		System.out.println(_str+":::"+_i);
	}

12 楼 ansjsun 2009-07-30  
String str = "hello wolrd wlllkdsfhksadfls?sdfls............................................................... sdf.pqyutgvAAAxzsdfs lsdfj,ljsfd  ajfdsak sfksjdfisfsdkfj lsdfjsidf jsafdalsjfs sfskdfjs";   
		int[] its = new int[200] ;
		char [] chars = str.toCharArray() ;
		int max = 0 ;
		char maxChar = 0 ;
		for (int i = 0; i < chars.length; i++) {
			if((chars[i] >= 65 && chars[i] <= 90) || (chars[i] >= 97 && chars[i] <= 122)) {
				its[chars[i]]++ ;
				if(its[chars[i]]>=max){
					max = its[chars[i]] ; 
					maxChar = chars[i] ;
				}
			}
		}
		System.out.println("出现最的字符是:"+maxChar+"   出现了"+max+"次");
11 楼 flyjiangs 2009-07-30  
public static void main(String[] args) {
List ls=new ArrayList();
        String s= "wklegja;sdfijwekhiopw2903l;k/adddddddddddddddfeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedbdfsaaaaaaaskldfjpoewgna/'eaegjafdjskl;";   
        s=s.replaceAll("[^a-zA-Z]","");
       
        int max = 0;  
        int temp = 0;  
        String tempString = "";
        for(int i = 0 ;i<s.length() ; i++ ){
       
            tempString = s.substring(0,1);  
            String subs = s.replace(s.substring(0,1),"");
            temp = s.length() - subs.length();  
            if(max<temp){
                max=temp;
                ls.add(tempString);
              }
            s = subs;
          
          
        }

        System.out.println(ls.get(ls.size()-1)+" max= "+max);
      
}
10 楼 whaosoft 2009-07-30  
最烦这个了 有时去大公司人家不管你几年经验了 有时都有这样的题 有什么必要吗?
9 楼 hedahai119 2009-07-29  
用过一个 Map 就可以了

key就放那个 字符(把整个String按字符拆了)

value放出现次数
便利那个String拆分的数组
if(map.contions(a)){
   map.put(a,map.get(a)+1);
}
else{
   map.put(a,1);
}

组后根据要求遍历map即可
8 楼 mygoodnews 2009-07-29  
char GetLetter(char *str,int&count)
{
     if(str==null)return -1;
     int sum[26*2+6]={0};
     count=0;
     retChar=-1;
    
     for(char *p=str;*p!='/0';p++)
     {   
         char c=*p;
         if((c>= 65 &&c <= 90) || (c>= 97 && c<= 122))
               sum[c-65]++;
      }
      for(int i=0;i<26*2+6;i++)
      {
         if(sum[i]<count)continue;
         count=sum[i];
         retChar=i;
      }
      return retChar+65;

}
7 楼 Kisses99 2009-07-29  
这是考算法还是OO编程还是jdk?
6 楼 nenyalanye_1 2009-07-29  
keyboardsun 写道
这个在commons long 的包里面,有那个可以统计重复数量的set。直接用就可以了。

这个我还真没用过,有空看看
5 楼 shfwplayer 2009-07-29  
<p>
</p>
<pre name="code" class="java">public static void main(String[] args)
{
String str="qiwerpis;lkzxnc;v";
Map map = new HashMap();
for(int i=0;i&lt;str.length();i++)
{
Integer count = 0;
if(!map.containsKey(str.charAt(i)))
{

map.put(str.charAt(i), 1);
}
else
{
count = (Integer)map.get(str.charAt(i));
count++;
map.remove(str.charAt(i));
map.put(str.charAt(i),count);
}
}
Set set =map.keySet();
Collection coll = map.values();
Iterator it = coll.iterator();
Iterator its = set.iterator();
while(it.hasNext())
{
System.out.println(its.next()+" :"+it.next());
}
}</pre>
4 楼 brilon 2009-07-28  
public class Test {
	
	public static void main(String[] args) {
		
		String str=" aaaaBBBBBBcdeFFFFFFFF           ";
		int len=str.length();
		char[] tmp=str.toCharArray();		
		
		int maxcount=0;
		char maxchar=0;
		int tempcount;		
		for(int i=0;i<len;i++){				
			tempcount=0;
			for(int j=0;j<len;j++){
				if(tmp[j]==tmp[i]) tempcount++;
			}
			if(tempcount>maxcount&&Character.isLetter(tmp[i])){
				maxcount=tempcount;
				maxchar=tmp[i];
			}			
		}
		System.out.println(maxchar);
		System.out.println(maxcount);		
	}
}


3 楼 keyboardsun 2009-07-28  
这个在commons long 的包里面,有那个可以统计重复数量的set。直接用就可以了。
2 楼 evabibi 2009-07-28  
public static void main(String[] args) {
		 String s= "sdfsddddddddddfffff,sdfsdf,"; 
		 s=s.replaceAll("[^a-zA-Z]","");
		 int max = 0;
		 int temp = 0;
		 String tempString = "";
		 for(int i = 0 ;i<s.length() ; i++ ){
			 tempString = s.substring(0,1);
			 String subs = s.replace(s.substring(0,1),"");
			 temp = s.length() - subs.length();
			 if(max<temp){
				 max=temp;
			 }
			 s = subs;
		 }
		 System.out.println(tempString+" max= "+max);
}


>_<
1 楼 lczheng 2009-07-28  
楼上实现的过于复杂了,贴一段我的实现,请各位拍砖:
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);
	}

相关推荐

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

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

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

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

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

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

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

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

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

    Java作为一门广泛使用的编程语言,其笔试和面试题目往往涵盖了多个核心领域。下面将对这些领域进行深入解析,帮助你更好地准备Java相关的技术面试。 ### 字符串(String) 字符串在Java中是常用的数据结构,面试中...

    ios 面试题目及答案

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

    c语言面试题目.docx

    C语言面试题目集 本资源摘要信息涵盖了C语言面试题目集,包括了C语言的基础知识、面试常见的问题、数据结构、算法、网络协议等方面的知识点。 一、C语言基础知识 1. static关键字的使用:static关键字可以用来...

    数通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. **基础语法**:...

    各个大公司模数电面试题目

    ### 各个大公司模数电面试题目解析 #### 基尔霍夫定律 - **定义**: 基尔霍夫定律是电路理论的基础之一,由德国物理学家古斯塔夫·罗伯特·基尔霍夫提出。该定律分为基尔霍夫电流定律(KCL)和基尔霍夫电压定律(KVL)...

    Windchill常见面试题目汇总.docx

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

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

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

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

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

    2018最新BAT+面试题目

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

    世界500强面试题目及评点

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

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

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

    集体面试流程+无领导小组讨论面试题目精讲汇总+答案.doc

    本文将深入探讨集体面试流程以及无领导小组讨论面试题目的精讲,帮助求职者更好地准备,以期在职场竞争中脱颖而出。 集体面试流程通常包含几个关键的步骤,首先是公司展示,这是为了让面试者初步了解公司的背景和...

    数据结构 面试 题目

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

Global site tag (gtag.js) - Google Analytics