《JAVA 程序员面试宝典(第四版)》之循环、条件、概率
分享内容:关于集合的使用
书页号码:77页
题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasdfddaaa",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet; public class test { public static void main(String[] args) {
String input = "aavzcadfdsfsdhshgwasdfasdfddaaa";
new test().doString(input);
} public void doString(String input){
char[] chars = input.toCharArray();
ArrayList<String> lists = new ArrayList<String>(); // 第一步:先将数组传入到TreeSet,通过这个集合自动过滤掉重复的字母,并且该集合会自动排序。
TreeSet<String> set = new TreeSet<String>();
for(int i=0;i<chars.length;i++){
lists.add(String.valueOf(chars[i]));
set.add(String.valueOf(chars[i]));
} System.out.println(set);//输出:[a, c, d, f, g, h, s, v, w, z]
Collections.sort(lists);// 第二步:使用ArrayList 进行快速排序
System.out.println(lists);//输出:[a, a, a, a, a, a, a, a, c, d, d, d, d, d, d, d, f, f, f, f, g, h, h, s, s, s, s, s, v, w, z] StringBuffer sb = new StringBuffer();
for(int i=0;i<lists.size();i++){
sb.append(lists.get(i));
} input = sb.toString();
System.out.println(input);//输出:aaaaaaaacdddddddffffghhsssssvwz
int max = 0;
String maxString = "";
ArrayList<String> maxList = new ArrayList<String>(); Iterator its = set.iterator();
while(its.hasNext()){
String os = (String) its.next();
int begin = input.indexOf(os);
int end = input.lastIndexOf(os);// 第三步:使用indexOf 和 lastIndexOf 来求出最大值。
int value = end - begin +1;
if(value>max){
max = value;
maxString = os;
maxList.add(os);
}else if(value==max){
maxList.add(os);
}
} System.out.println("maxString:"+maxString);//输出:maxString:a
System.out.println("maxList:"+maxList);//输出:maxList:[a] int index = 0;
for(int i=0;i<maxList.size();i++){
if(maxList.get(i).equals(maxString)){
index = i;
break;
}
} System.out.print("max data:");//输出:max data:a
for(int i=index;i<maxList.size();i++){
System.out.println(maxList.get(i)+" ");
} System.out.println();
System.out.println("max:"+max);//输出:max:8 } }
分享这个例子的原因是这个里面包含一些集合(TreeSet、ArrayList、indexOf、lastIndexOf)例子的使用,感觉比较经典因此就分享出来了,当然这篇文章我还想分享一些关于递归方面例子,但是感觉我对递归的了解还是比较肤浅,等我抽个时间研究后,再出来分享一下。
本篇未完待续........
《JAVA 程序员面试宝典(第四版)》之循环、条件、概率的更多相关文章
- 【Java】Java程序员面试宝典(第三版)第5章----Java程序设计基本概念
1.static静态变量,在次级作用域也可以被修改. 2.k++ + k++.第一个自加实际上只有在与计算+k++时补增.详情P36的题目. 3.Java数据类型从低到高分为(byte short c ...
- 《JAVA 程序员面试宝典(第四版)》读书笔记之前言
工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过 ...
- JAVA程序员面试宝典
程序员面试之葵花宝典 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面.抽象并不5. 打算了解全部问题 ...
- Java程序员面试宝典1 ---Java基础部分(该博文为原创,转载请注明出处)
(该博文为原创,转载请注明出处 http://www.cnblogs.com/luyijoy/ by白手伊凡) 1. 基本概念 1) Java为解释性语言,运行过程:程序源 ...
- [Java程序员面试宝典]读书笔记
ClassLoader具备层次关系,且不止一种.不同的类装载器分布创建的同一个类的字节码数据属于完全不同的对象,没有任何关联 通过Class.forName(String className),能够动 ...
- java程序员面试宝典之——Java 基础部分(1~10)
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".java"源文件中是否可以包 ...
- 《JAVA 程序员面试宝典(第四版)》之传递与引用篇
废话开场白 这个周末突然很想创业,为什么呢?原因很简单,我周围的同学或者说玩的比较好的朋友都发达了,前一个月和一个两年前还睡在一张床上的朋友,他现在已经在深圳买房买车了,没错是在深圳买 ...
- 《JAVA 程序员面试宝典(第四版)》之JAVA程序设计基础概念(1)类型转换
问题主题:类型转换 书页号码:37页 题目: 讨论点:答案不是D,应该是B 理由:看下面在编译器输入的结果 知识扩展:装箱与拆箱, == 与 equals 区别 之前也老是听说什么装箱.拆箱之 ...
- Java程序员面试宝典——重要习题整理
1.下面程序的输出结果是() public class Test { public static void main(String[] args) { int j = 0 ; for(int i = ...
随机推荐
- 利用window10的Linux子系统实现docker的安装使用
先参照 此博客 点这里 我在执行 apt installdocker.io 命令时,不能正确的安装 docker client 所以我找了下面的命令,然后执行 docker version 成功了 辅 ...
- SpringBoot之ConfigurationProperties 源码解读
前言 ConfigurationProperties 是SpringBoot引入的一个和外部配置文件相关的注解类.它可以帮助我们更好的使用外置的配置文件属性. 源码解析 属性注入到Java类 @Tar ...
- Apache Pig中文教程集合
Apache Pig中文教程集合: http://www.codelast.com/?p=4550#more-4550
- Spring Boot入门(二):获取配置文件值
本篇博客主要讲解下在Spring Boot中如何获取配置文件的值. 1. 使用yaml配置文件 Spring Boot默认生成的配置文件为application.properties,不过它也支持ya ...
- solr学习篇(三) solr7.4 连接MySQL数据库
目录 导入相关jar包 配置连接信息 将数据库导入到solr中 验证是否成功 创建一个Core,创建Core的方法之前已经很详细的讲解过了,如果还是不清楚请参考 solr7.4 安装配置篇: 1.导入 ...
- JAVA必知必问问题-1
数据类型 1) 基本类型: byte, int, long, float, double, boolean.... 要求记住基本类型占多少字节.范围.例如:byte 1字节范围-128-127,sho ...
- django-ckedit
(转载) 在django项目中使用django-ckeditor 安装django-ckeditor pip install django-ckeditor 安装Pillow Pillow是pyt ...
- 设计模式C++描述----20.迭代器(Iterator)模式
一. 举例说明 我们知道,在 STL 里提供 Iterator 来遍历 Vector 或者 List 数据结构. Iterator 模式也正是用来解决对一个聚合对象的遍历问题,将对聚合的遍历封装到一个 ...
- linux C进程常用操作
不登高山,不知天之高也: 不临深溪,不知地之厚也. 荀子<劝学> linux应用层主要是一个个独立任务的进程在运行,但是很多时候,在工作中我们可能很少去重新写一个进程, 大部分的工作都是分 ...
- Spring Boot 2.X(十五):集成 Swagger2 开发 API 文档(在线+离线)
前言 相信很多后端开发在项目中都会碰到要写 api 文档,不管是给前端.移动端等提供更好的对接,还是以后为了以后交接方便,都会要求写 api 文档. 而手写 api 文档的话有诸多痛点: 文档更新的时 ...