一道JAVA经典面试题目的两种解法
题目要求:String s="-1 2 5 78 129 -65 -23";将字符串进行升序排序后输出。
方法一:使用数组进行排序
思路:
1、获取字符串中的数值;
2、将数组存入整型数组中;
3、对int数组进行排序;
4、将int数组变成字符串;
步骤:
1、切割;
2、对字符串数组中元素进行转化存入;
3、对int数组进行sort;
4、把int数组变成字符串;
源代码如下:
/** *@date:2013年9月25日 *@author:lkx / /* 练习:String s=“-1 28 72 104 -98 12” 题目:将字符串进行升序排序后输出生成新的字符串 思路:1、获取字符串中的数值; 2、将数组存入整型数组中; 3、对int数组进行排序; 4、将int数组变成字符串; 步骤: 1、切割; 2、对字符串数组中元素进行转化存入; 3、对int数组进行sort; 4、把int数组变成字符串; */ import java.util.*; class Face { /* 将字符串通过空格切割成字符数组 */ public static String[] getStrArray(String str) { return str.split(" "); } /* 将字符数组转化为整型数组 */ public static int[] toIntArray(String[] str) { int [] intArray=new int[str.length]; for(int i=0;i<str.length;i++) { intArray[i]=Integer.parseInt(str[i]); } return intArray; } /* 将排序后的整型数组转化为字符串 */ public static String toStingArray(int[] num)//整型数组转化成字符串 { StringBuilder sb=new StringBuilder(); for(int i=0;i<num.length;i++) { if(i!=num.length-1) sb.append(num[i]+","); else sb.append(num[i]); } return sb.toString(); } public static void main(String[] args) { String s="-1 2 5 78 129 -65 -23"; String [] str=getStrArray(s); int[] num=toIntArray(str); Arrays.sort(num); String y=toStingArray(num); System.out.println(y); } }
方法二:使用集合框架TreeSet
原解法虽然思路清晰,按部就班,便于理解,但是代码略长,一个简单的功能用了将近70行代码,
为什么我们不换一种思路,用集合框架强大的容器功能实现这一程序呢。
源代码如下:
/** *@Date:2013年9月28日 *@author:lkx */ /*练习:String s=“-1 28 72 104 -98 12” 题目:将字符串进行升序排序后输出生成新的字符串 */ import java.util.*; class StringSort { //将字符串通过空格切割成字符数组 public static String[] getStrArray(String str){ return str.split(" "); } //用集合框架TreeSet容器存放数据 public static void TreeSetSave(String []num){ TreeSet ts=new TreeSet(); for (int i=0;i<num.length;i++ ){ ts.add(Integer.parseInt(num[i])); /*TreeSet类底层数据结构为红黑树,可对实现了Comparable接口 的元素(本例中为Integer)进行自然排序*/ } for(Iterator it=ts.iterator();it.hasNext();)//使用迭代器输出 System.out.println(it.next()); } public static void main(String[] args) { String s="-1 2 5 78 129 -65 -23"; String []num=getStrArray(s); TreeSetSave(num); } }
一道JAVA经典面试题目的两种解法的更多相关文章
- C语言经典面试题目(转的,不过写的的确好!)
第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...
- 33条C#、.Net经典面试题目及答案
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...
- 33条C#、.Net经典面试题目及答案[zt]
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如“.NET中类和结构的区别”.“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希 ...
- 经典面试题目——250M内存处理10G大小的log文件
前言 周末逛知乎的时候,看到的一个经典面试题目:http://www.zhihu.com/question/26435483.非常经典的一道分而治之的题目. 题目描写叙述例如以下: 有次面试遇到一个问 ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】
[]如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...
- Java描述表达式求值的两种解法:双栈结构和二叉树
Java描述表达式求值的两种解法:双栈结构和二叉树 原题大意:表达式求值 求一个非负整数四则混合运算且含嵌套括号表达式的值.如: # 输入: 1+2*(6/2)-4 # 输出: 3.0 数据保证: 保 ...
随机推荐
- Android:界面设计工具DroidDraw
DroidDraw是款强大的安卓界面设计软件,基于Java Swing开发,可以通过它拖动控件.设置层属性.设置颜色等步骤轻松地生成复杂的安卓XML布局文件. >>>>> ...
- Android Handler传值方式
前面介绍handler的时候,也用到过几种传值方式,今天来总结一下,并且重点说一下bundle方式,代码如下: package com.handlerThread; import android.ap ...
- Collection_Compare
冒泡 package com.bjsxt.sort.bubble; import java.util.Arrays; public class BubbleSort1 { /** * @param a ...
- poj 3264 Balanced Lineup (RMQ算法 模板题)
RMQ支持操作: Query(L, R): 计算Min{a[L],a[L+1], a[R]}. 预处理时间是O(nlogn), 查询只需 O(1). RMQ问题 用于求给定区间内的最大值/最小值问题 ...
- Java与正则表达式
Java与正则表达式 标签: Java基础 正则 正如正则的名字所显示的是描述了一个规则, 通过这个规则去匹配字符串. 学习正则就是学习正则表达式的语法规则 正则语法 普通字符 字母, 数字, 汉字, ...
- UVa 10674 (求两圆公切线) Tangents
题意: 给出两个圆的圆心坐标和半径,求这两个圆的公切线切点的坐标及对应线段长度.若两圆重合,有无数条公切线则输出-1. 输出是按照一定顺序输出的. 分析: 首先情况比较多,要一一判断,不要漏掉. 如果 ...
- asp.net的decimal保留两位小数
C#的decimal保留两位小数 方法一: decimal d = 46.28111; string dStr = Math.Round( d,2 ).ToString(); 结果:dStr = 46 ...
- acdream 1684 娜娜梦游仙境系列——莫名其妙的插曲 (gcd)
题意:一开始有一个集合,集合里有n个不同的数,然后Alice(娜娜)与Bob轮流进行操作,每人都可以任意选择两个数a,b,不妨设a>b,不过要求a-b不在集合中,把a-b放入集合(集合元素个数只 ...
- Liunx 配置IDE
如果你还没装编译环境或自己不确定装没装,不妨先执行 sudo apt-get install build-essential 如果你已经了解一些 vim 的知识,而且想用它来编辑源代码,那么我们不妨装 ...
- dbms_stats.gather_table_stats与analyze table 的区别[转贴]
Analyze StatementThe ANALYZE statement can be used to gather statistics for a specific table, index ...