题目:
“编写函数int[]alphaOrder(int n),返回按字典排序的数字1~n”
例如n=12,返回[1,10,11,12,2,3,4,5,6,7,8,9]
当时一看这题有点蒙了,首先过分纠结于“字典排序“这几个字眼,而忽略了题目本身,导致当时我这个题目尽然空着。下来再想想这个题目其实单纯从给出一个答案的角度看真不难。
先上一段我实现的代码:
public class AlphaOrder { /** * @param args */ public static void main(String[] args) { AlphaOrder ao = new AlphaOrder(); int[] result = ao.alphaOrder(12); for(int i =0;i<result.length;i++){ System.out.print(result[i]+","); } } /** * 传入一个数作为数组长度,产生一个字典排序后的数组 * @param n * @return */ private int[] alphaOrder(int n){ int [] a = new int[n]; String [] temp = new String[n];//作为中间数组 String s; //生成原始数组 for(int i=1;i<=n;i++){ temp[i-1] =""+i; } //借用String的CompareTo()方法进行字典排序 //这里用两个层嵌套不好,针对本题对有规律的整型数排序一层就够 //这样时间复杂度可以由O(n2)减为O(n) for(int i=0;i<temp.length;i++){ for(int j = 1;j<temp.length;j++){ int com = temp[j].compareTo(temp[j-1]); System.out.println(temp[j]+"compareTo"+temp[j-1]+"的结果是:"+temp[j].compareTo(temp[j-1])); if(com<0){ s=temp[j-1]; temp[j-1] = temp[j]; temp[j] = s; } } } //将字符串数组转化成整型数组 for(int i = 0;i<n;i++){ a[i] = Integer.parseInt(temp[i]); } return a; } }
测试的结果:
1,10,11,12,2,3,4,5,6,7,8,9
谈谈对这个题的思考:
这个体大的不好就在于一点就是”纠结于怎么实现”字典排序“,而忽略了String类已经为我们提供了这样 的方法“后来我又想了想,导致这个状况可能有这么几个原因:
1)开始的思路是不对的当时压根就没往这方面想
2)在学习的时候做的不够细,手边常用的还行,那些做项目中没接触过的可能就不那么熟悉,就比如”字典排序“String的”compareTo“方法,可能就局限与知道,连熟悉可能都谈不上。
public int compareTo(String anotherString) { int len1 = count; int len2 = anotherString. count; int n = Math. min(len1, len2); char v1[] = value; char v2[] = anotherString. value; int i = offset; int j = anotherString. offset; if (i == j) { int k = i; int lim = n + i; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2; } k++; } } else { while (n-- != 0) { char c1 = v1[i++]; char c2 = v2[j++]; if (c1 != c2) { return c1 - c2; } } } return len1 - len2; }
3)看源码,可能对一些常用类的方法平时我就只局限于用的程度,没有认真地想想或看看具体的实现,以后在这方面可能会多留心,尽量做到"不仅知其然还要知其所以然"
4) 前路漫漫,任重道远,加油吧”少年“时间不早了就先写到这(晚安,各位看官!!!)
相关推荐
在IT行业中,面试是获取理想职位的关键步骤,而笔试题则常常是面试的第一道关卡。对于求职者来说,了解并准备...记住,实践是检验真理的唯一标准,多做题、多思考、多总结,才能在竞争激烈的IT行业求职路上取得优势。
实践学习的重要性在当今社会被广泛认可,大学生应通过参与各种活动,获取实践经验,从而更好地理解理论知识与现实工作的结合。 财务管理与理财能力的培养也是大学生生涯规划中不应忽视的一环。学校有必要为学生开设...
1. **自我介绍**:清晰地介绍自己的教育背景、实习经历和专业技能,同时展示出对银行行业的热情和理解。 2. **案例分析**:面试官可能会给出实际业务问题,让你进行分析和解决,展现你的问题解决能力和商业敏感度。...
2. **突出重点**:将与应聘职位相关的经历和技能放在显眼位置,比如你在大学期间完成的相关课程项目或实习经历。 3. **量化成果**:用数字来描述你的成就,例如提高工作效率的百分比、项目涉及的用户数量等,这将使...
这份资料集结合了多年的积累,涵盖了多个领域的面试问题和简历设计技巧,是求职路上的一份宝贵财富。 首先,我们来探讨“个人简历”的制作。一份成功的简历需要清晰地展示出你的教育背景、工作经验、技能特长以及...
本资源包"性格测试汇总.zip"是一个综合性的集合,包含了183个不同的性格测试文件,适用于实习申请者和寻找全职工作的求职者。通过这些测试,你可以了解不同公司的笔试形式,为自己的面试做好充分准备。 性格测试...
高级java笔试题 简介 hello,大家好,欢迎大家来到这里,能来到这里,证明是一种缘分。 下面我先简单介绍一下自己。 我目前是一名程序员,Android 高级工程师,17 年毕业,从实习到现在,一直从事在 Android 开发,...
综上所述,Java Guide 面试突击版是一份全面的Java面试准备资料,它不仅包含了面试技巧和简历写作指导,更深入到Java编程的核心知识,是Java开发者求职路上的重要参考资料。通过系统学习和复习,开发者能够提高自己...
这些问题往往与求职者的项目经验、实习经历、学习能力等息息相关,通过这些问题的准备,求职者可以更好地向面试官展示自己的潜力和成长性。 最后,这份“面试集锦”不仅仅是一份材料的堆砌,它更是求职者在面试准备...
考研是众多学子追求更高...这份2020年考研复试必备资料-中公考研,涵盖了复试的各个环节,为考生提供了全面的指导,是备考路上的得力助手。通过细致的学习和实践,考生可以自信地迎接考研复试的挑战,迈向成功的未来。
在本文中,我将根据自己的考研经历,结合在准备考研过程中的心得体会,分享一些实用的考研经验和策略,希望能够为那些同样在考研路上奋斗的同学们提供一些启示和帮助。 首先,提前规划和准备是考研成功的关键之一。...