Java面试基础--(出现次数最多的字符串)
题目:给定字符串,求出现次数最多的那个字母及次数,如有多个 重复则都输出。
eg,String data ="aaavzadfsdfsdhshdWashfasdf";
思路:
1.引入TreeSet,通过集合快速找到所有出现的字符串;
2,引入ArrayList:为了快速排序,再通过StringBuffer生成排序后的字符串;
3,通过String api中的基本方法 indeOf() lastIndexOf()来计算TreeSet中每个字符串的最大值;
4,如果出现相同的则把相同的都记录在一个列表中,
5,记录第一个出现次数最多的字符(为了计算多个字符串相同的情况)
6,计算最大字符串列表中哪些才是真正出现次数最多的。
1 import java.util.*;
2
3 public class MaxStringNumber {
4
5 public static void main(String[] args) throws Exception{
6 String input ="aaavzadfsdfsdhshdWashfasdf";
7 new MaxStringNumber().doString(input);
8
9 }
10
11 public void doString(String input) {
12 // TODO Auto-generated method stub
13 char [] chars = input.toCharArray();
14 ArrayList lists = new ArrayList();
15 TreeSet set = new TreeSet();
16 for(int i = 0;i<chars.length;i++){
17 lists.add(String.valueOf(chars[i]));
18 set.add(String.valueOf(chars[i]));
19 }
20
21 System.out.println(set);
22 Collections.sort(lists);
23 System.out.println(lists);
24
25 StringBuffer sb = new StringBuffer();
26 for(int i=0;i<lists.size();i++){
27 sb.append(lists.get(i));
28 }
29
30 input = sb.toString();
31 System.out.println(input);
32 int max = 0;
33 String maxString = "";
34 ArrayList maxlist =new ArrayList();
35
36 Iterator its = set.iterator();
37 while(its.hasNext()){
38 String os = (String)its.next();
39 int begin = input.indexOf(os);
40 int end = input.lastIndexOf(os);
41 int value = end -begin +1;
42 if(value >max){
43 max =value;
44 maxString = os;
45 maxlist.add(os);
46 }else if(value == max){
47 maxlist.add(os);
48 }
49 }
50 int index = 0;
51 for(int i= 0;i<maxlist.size();i++){
52 if(maxlist.get(i).equals(maxString)){
53 index =i;
54 break;
55 }
56 }
57
58 System.out.println("出现最多的字符分别为:");
59 for(int i=index;i<maxlist.size();i++){
60 System.out.println(maxlist.get(i)+" ");
61 }
62 System.out.println();
63
64 System.out.println("出现最多的次数为: "+max);
65
66
67 }
68 }
Java面试基础--(出现次数最多的字符串)的更多相关文章
- javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数
javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...
- 我的Java开发学习之旅------>求字符串中出现次数最多的字符串以及出现的次数
金山公司面试题:一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数 ...
- JAVA面试基础
JAVA相关基础知识1.面向对象的特征有哪些方面 ?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂 ...
- SDUT OJ 2892 A (字典树问题-输出出现次数最多的字符串的出现次数,60ms卡时间,指针+最后运行完释放内存)
A Time Limit: 60ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给出n(1<= n && n <= 2*10^6)个字 ...
- java 返回输入中出现次数最多的字符串
举例输入: abc abc de de de fghi fghi 应该返回: de 代码: static List<String> func(String str) { String[] ...
- 编写一个应用程序,利用数组或者集合, 求出"HELLO",“JAVA”,“PROGRAM”,“EXCEPTION”四个字符串的平均长度以及字符出现重复次数最多的字符串。
public class Number { public static void main(String[] args) { String[] arr = { "HELLO", & ...
- Java 面试基础总结(一)
1.九种基本数据类型的大小以及它们的封装类 java提供的九种基本数据类型:boolean.byte(1).char(2).short(2).int(4).long(8).float(4).doubl ...
- java面试基础题(三)
程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此 ...
- Java面试基础部分合集
写在前面:这篇文章对于在Java方面已经很牛逼的大手,就没必要看了,因为对于你们来说,这tm简直太简单了.... 面试我们都经历过,你真的懂面试吗?针对面试我只想说一点,面试的目的不是让考官知道你怎么 ...
随机推荐
- PTA 7-2 畅通工程之局部最小花费问题 (35分)
PTA 7-2 畅通工程之局部最小花费问题 (35分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实 ...
- lua入门之环境搭建、第一个demo
前言 前段时间因为有些项目功能需要,自己研究了下lua,今天整理下,并以一个demo为示例演示 手机上的运行效果 分为几个步骤来逐步讲解. 1.lua介绍,为什么选择它? 2.环境安装 3.撸一个简单 ...
- Linux mem 2.7 内存错误检测 (KASAN) 详解
文章目录 1. 简介 2. Shadow 区域初始化 3. 权限的判断 3.1 read/write 3.2 memxxx() 4. 权限的设置 4.1 buddy 4.1.1 kasan_free_ ...
- Linux常见目录结构
目录 描述 /home 包含Linux系统上各用户的主目录,子目录默认以该用户名命名 /etc 包含Linux系统上大部分的配置文件,建议修改配置文件之前先备份 /var 该目录存放不经常变化的数据, ...
- 菜鸡的Java笔记 第三十四 Annotation
Annotation 多例模式特点: 1. 多例类可以有多个实例 2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例 ...
- java开发环境搭建,配置
java开发环境搭建 下载jdk8的地址 是oracle的 安装JDK 下载电脑对应的版本 双击安装JDK 记住安装路径 配置环境变量 我的电脑/此电脑 右键属性 高级设置 环境变量 点击新建 变量名 ...
- python实现模板匹配
目录: (一)原理 (二)代码实现和几种常见的模板匹配算法 正文: (一)原理 在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大. 作用有局限性, ...
- 网络安全协议之IPsec
声明 本文仅发表在博客园,作者LightningStar. 简介[1] IPSec(Internet 协议安全)是一个工业标准网络安全协议,工作在OSI模型的第三层,即网络层,为IP网络通信提供透明的 ...
- [cf1137F]Matches Are Not a Child's Pla
显然compare操作可以通过两次when操作实现,以下仅考虑前两种操作 为了方便,将优先级最高的节点作为根,显然根最后才会被删除 接下来,不断找到剩下的节点中(包括根)优先级最高的节点,将其到其所在 ...
- [atARC111F]Do you like query problems
(以下修改指1和2类操作,询问指3类操作,操作指修改或询问) 注意到总方案数确定,那么不妨求出答案的期望,再乘上方案数即为答案 (这里从期望的角度考虑只是为了描述方便,并没有太大的实际意义) 设$E( ...