华为上机题之去除字符串中最大最小的数
来源:互联网 发布:c语言mod 编辑:程序博客网 时间:2024/04/29 21:12
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 输入一串数,以‘,’分隔,输出所有数中去掉最大值、最小值之后剩下的个数。(其中最大值与最小值可能有多个)</span>Smple input :3,3,5,3,6,9,7,9
Sample outPut: 3
分析:
1)采用数组哈希法,但此处没有明确给定数字的范围,所以需要申请2的32次方个元素的素组,肯定不行啊。
2)使用HashMap,相对于数组哈希的算法来说,我只需要知道字符串里面有多少个数字就可以了,然后申请n大小的HashMap。在堆每个数组进行hash,hash的同时去掉多余的数字。然后,对HashMap中的数字进行排序。相对于第一种方法来说,已经好很多了。
还有没有更好的算法呢?来看看第三种方法。
3)采用红黑树,管都不管你有多少个数字,树中的每个节点都是动态的。同时,红黑树是会对取出重复的数字,并自动排序。通过迭代器就可以打印出排序好的数组。
import java.util.Iterator;import java.util.Scanner;import java.util.TreeSet;public class JinZhi{public static void main(String[] args){Scanner scanner=new Scanner(System.in);TreeSet<Integer> treeSet=new TreeSet<>();String str=null;if(scanner.hasNext()){str=scanner.next();}for (int i = 0,j=0; i < str.length(); i++){if (str.charAt(i)==','){String temp=str.substring(j, i);treeSet.add(Integer.valueOf(temp));j=i+1;}}Iterator<Integer> iterator=treeSet.iterator();int j=0;if (treeSet.size()<=2){System.out.println(0);return;}else {System.out.println(treeSet.size()-2);return;}}
0 0
- 华为上机题之去除字符串中最大最小的数
- 华为上机题1:去掉最大最小值之后数的个数
- 九度论坛--上机题1053:互换最大最小数
- 华为上机题之输出身高差值最小的俩个人
- 华为:输入整数字符串,求最大数与最小数之和
- 华为机试2题:排序并剔除连续的数字只保留最大最小数
- 华为上机编程之字符串中含有该字符的个数
- 华为机试 - 最小最大数之和
- python 中最大,最小数的问题
- 华为校招上机编程之““字符串的分割””
- 华为上机试题8(查找最大递减数)
- sql 获取字符串中最小的数
- C++学习之vector重复元素的去除和求vector中最大最小元素及其索引
- 华为上机题:字符串最后一个单词的长度
- 我的第六个C++上机报告(求四个数中的最大数和最小数)
- 华为上机练习题--判断一个字符串中是否只含有相同的子字符串
- 从数组中找出最大的和最小的数
- 字符串过滤器(华为上机题)
- 单例设计模式
- Leetcode#57||Insert Interval
- 自定义控制器转场动画及实现下拉菜单的小Demo
- SQL语句是如何被解析的
- Android WebView的cookie第一次加载不工作的问题的解决
- 华为上机题之去除字符串中最大最小的数
- [leetcode] 218.The Skyline Problem
- 51NOD 1459 迷宫游戏
- AltiumDesigner99——常用快捷键
- SQLite 创建表
- 法线贴图原理,切线空间的概念理解
- Android内容提供者(Content provider)
- leetcode--LargestRectangleinHistogram
- Android studio: No debuggable Application