最近面试时碰到一道需要上机的题目要我用手写出来。我当时没做出来。回家后就自己写了下。可能不是最好的,但还是我自己做出来的欢迎拍砖
题目很简单:给你一个字符串,包含了空格等标点符号,要你计算出出现次数最多的字母和该字母出现的次数。
下面是我的方法
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
}
}
这里有几个地方需要修改 我没有做修改 估计会出现内存溢出的问题
分享到:
相关推荐
[消防文员面试题目]消防面试题目.pdf
Java常见笔试_面试题目深度剖析
部分面试题目如下: 自我介绍 成绩排名简单介绍 项目介绍:最难的地方,创新点 最有压力的时候,如何处理 英语水平 对德赛西威的认识 如何看待卷 如何看待加班 ### 德赛西威面试经历分享 德赛西威作为一家知名的...
这份资源"Java常见笔试、面试题目深度剖析"显然是为了帮助求职者更好地准备相关考试而设计的。以下将对Java笔试和面试的一些核心知识点进行详细的阐述: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、...
Java作为一门广泛使用的编程语言,其笔试和面试题目往往涵盖了多个核心领域。下面将对这些领域进行深入解析,帮助你更好地准备Java相关的技术面试。 ### 字符串(String) 字符串在Java中是常用的数据结构,面试中...
标题 "iOS 面试题目及答案" 指出了文件内容主要围绕iOS开发相关的面试题目和答案展开,覆盖了iOS开发中的一些核心概念和技术点。描述部分说明这些面试题目非常全面,涉及了Objective-C、Cocoa Touch以及Xcode的使用...
C语言面试题目集 本资源摘要信息涵盖了C语言面试题目集,包括了C语言的基础知识、面试常见的问题、数据结构、算法、网络协议等方面的知识点。 一、C语言基础知识 1. static关键字的使用:static关键字可以用来...
数通HCIE RS面试题目解析 在计算机网络领域,HCIE(Huawei Certified Internetwork Expert)是华为公司推出的认证项目之一,旨在评估网络工程师的技术能力和实践经验。HCIE RS( Routing and Switching)是HCIE认证...
本压缩包包含的“ASP.NET上海面试题目(经典)”资料,提供了130道面试题目,涵盖了ASP.NET、SQL Server等关键知识点,对于准备在上海地区寻求ASP.NET相关工作的求职者来说,具有很高的参考价值。 以下是部分题目...
这份"大公司C++面试题目集锦"包含的两份文档——"c++试题(1).doc"和"c++试题(2).doc",无疑是帮助你巩固知识、提升技能的关键资源。以下是基于这些文件可能涵盖的一些重要知识点的详细解析: 1. **基础语法**:...
### 各个大公司模数电面试题目解析 #### 基尔霍夫定律 - **定义**: 基尔霍夫定律是电路理论的基础之一,由德国物理学家古斯塔夫·罗伯特·基尔霍夫提出。该定律分为基尔霍夫电流定律(KCL)和基尔霍夫电压定律(KVL)...
**Windchill常见面试题目汇总** Windchill是一款由PTC公司开发的基于Web的企业产品生命周期管理(PLM)系统,主要用于产品数据管理和协同工作。它涵盖了产品设计、工程、制造、服务等整个生命周期,旨在提高产品的...
"C++面试题目分析" 本文档提供了17道经典的C++面试题目,涵盖了C++语言的各种基础语法和算法,包括字符串处理、数字处理、数组处理等。每个题目都提供了详细的解释和参考答案,旨在帮助读者更好地理解C++语言的实现...
华为公司作为全球知名的IT巨头,其面试题目往往涵盖了计算机科学和技术的多个领域,旨在测试应聘者的综合素质和专业技能。从提供的文件名来看,我们可以推测这些面试题目可能涉及到算法、技术支持以及可能的一些行业...
【标题】:“2018最新BAT+面试题目”涵盖了中国顶级互联网公司——百度(Baidu)、阿里巴巴(Alibaba)和腾讯(Tencent)在2018年招聘过程中的热门面试问题。这些题目旨在测试候选人在技术、逻辑思维、问题解决以及...
《世界500强面试题目及评点》是两份重要的资源,主要针对那些渴望进入全球顶级企业工作的人群。这些公司通常会设置独特的面试环节,以全面评估候选人的综合素质和专业技能。以下是对这两部分内容的详细解读。 在500...
本资料包“c++面试题目题目集合 完美的笔试面试”包含了丰富的C++面试题,旨在帮助求职者提升应对笔试和面试的能力。 一、C++基础 1. **变量与数据类型**:理解基本数据类型(如int, float, double, char)以及...
本文将深入探讨集体面试流程以及无领导小组讨论面试题目的精讲,帮助求职者更好地准备,以期在职场竞争中脱颖而出。 集体面试流程通常包含几个关键的步骤,首先是公司展示,这是为了让面试者初步了解公司的背景和...
### 数据结构面试题目解析 1. **题目一**:“链表与数组的不同之处” - 数组是顺序存储的,访问时间复杂度为O(1),但插入删除操作可能需要移动大量元素,时间复杂度为O(n)。 - 链表是链式存储,访问时间复杂度为O...