在网上看到这样一则面试题:
算法程序题:
该公司笔试题就1个,要求在10分钟内作完。
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
现在把两种解法公布于下:
方法一:
private static String[] forbidenNumber = new String[] { "0", "6", "7", "8",
"9" };
private static String[] mustExistNumber = new String[] { "1", "2", "2",
"3", "4", "5" };
private static boolean isValidNumber(String str) {
// 检查是否有非法数字,有返回false,否则继续
for (String number : forbidenNumber) {
if (str.indexOf(number) >= 0) {
return false;
}
}
// 检查是否存在要的数字,如果不存在返回false,否则继续
for (String number : mustExistNumber) {
int temp = str.indexOf(number);
if (temp < 0) {
return false;
} else if ((str.indexOf(number, temp + 1) > temp)
&& str.charAt(temp) != '2') {
return false;
}
}
// 检查4在不在第三位,是返回false
if (str.charAt(2) == '4') {
return false;
}
// 检查是否存在35在一起,有返回false
if (str.indexOf("35") >= 0 || str.indexOf("53") >= 0) {
return false;
}
return true;
}
public static void main(String[] args) {
// TODO code application logic here
for (int i = 122345; i < 543221; i++) {
if (isValidNumber(String.valueOf(i))) {
System.out.println(i);
}
}
}
方法二:
private static String[] mustExistNumber = new String[] { "1", "2", "2",
"3", "4", "5" };
private static boolean isValidNumber(String str) {
// 检查是否包含12345这五个数,不包含返回false
for (String number : mustExistNumber) {
if (str.indexOf(number) < 0)
return false;
}
// 检查是否有两个2,只有一个返回false
if (str.lastIndexOf("2") == str.indexOf("2")) {
return false;
}
// 检查4在不在第三位,是返回false
if (str.charAt(2) == '4') {
return false;
}
// 检查是否存在35在一起,有返回false
if (str.indexOf("35") >= 0 || str.indexOf("53") >= 0) {
return false;
}
return true;
}
public static void main(String[] args) {
// TODO code application logic here
for (int i = 122345; i < 543221; i++) {
if (isValidNumber(String.valueOf(i))) {
System.out.println(i);
}
}
}
备注:第二种方法是本人在第一种方法(他人)的思路上进行的改进,思路较第一种略清晰!
分享到:
相关推荐
JAVA经典算法面试39题及答案,算法是不得不看的
JAVA JAVA面试 算法题 算法题答案 面试 答案 谢谢
JAVA经典算法40题面试题案例
JAVA经典算法40面试题,包含基本的算法面试代码题。
收集了java的一些面试题,面试总结以及经典算法的java与c的实现,还有关于java基本语法 的经典总结。
内含: JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 ...算法面试题 Elasticsearch 面试题 Kafka 面试题 微服务 面试题 Linux面试题
最全的Java面试题整理,含算法题 从大学到现在,参加过很多面试,经常会被问到一些基本的算法题,而大部分算法的理论及思想,我们曾经都能倒背如流,并且也用语言实现过,可由于在项目开发中应用的比较少,久而久之...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
java算法与编程面试题java算法与编程面试题java算法与编程面试题java算法与编程面试题java算法与编程面试题
java算法 面试必备 安卓面试 必备算法
企业面试题 - 算法与编程 此文档包含了算法和算法详解
面试知识点总结--java笔试算法题及答案.pdf
汇总当前最热门的Java 算法面试题,方便大家能迅速刷题,也能迅速判断自己的刷题情况,是否能从容应对面试。让我们共同面对这个卷卷的时代。
多种笔试面试的算法设计题,和经典笔试题目。
Java面试笔试题大汇总(最全+详细答案) Java面试笔试题大汇总(最全+详细答案)
JAVA面试100题
java面试,算法
10、JAVA面试题集锦1.pdf。11、JAVA面试题集锦2.pdf。12、java算法面试题.pdf。13、程序员面试宝典.pdf。14、代码与编程题.pdf。15、各大公司面试题.pdf。16、数据库设计规范V1.00.pdf。17、线程编程方面.pdf。18、...
1. 1 - 100, 找出质数 2. 冒泡排序 3. 1~100共一百个自然数,放入一个只有99个元素的数组中,找出没有被放入数组的这个数; 4. 字符串的反转输出 5. 截取字符串, 如果该字符串是“abc我的”,当截取的字节数是3时候...