`
hdxiong
  • 浏览: 377011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 面试算法题(经典)

    博客分类:
  • Java
阅读更多
在网上看到这样一则面试题:

算法程序题:
    该公司笔试题就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经典算法面试39题及答案 本资源总结了39道经典的 JAVA 算法面试题目,每个题目都附带答案,涵盖了常见的算法问题,旨在帮助读者更好地掌握 JAVA 编程语言和算法设计。 算法概述 算法是计算机科学中最重要的...

    JAVA经典算法40面试题

    JAVA经典算法40面试题 本资源摘要信息涵盖了JAVA经典算法40面试题,包含基本的算法面试代码题。以下是对标题、描述、标签和部分内容的详细解释: 一、标题:“JAVA经典算法40面试题” 该标题表明该资源是关于JAVA...

    JAVA经典算法40题面试题案例.pdf

    在Java面试中,算法题是考察候选人编程能力的重要环节。这里我们探讨三个常见的算法问题及其解决方案。 **问题1:斐波那契数列(Fibonacci Sequence)** 斐波那契数列是一个序列,其中每个数字是前两个数字的和。...

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    内含: JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 ...算法面试题 Elasticsearch 面试题 Kafka 面试题 微服务 面试题 Linux面试题

    java经典算法90题含源码及答案.rar

    Java经典算法90题含源码及答案的资源是一份非常宝贵的资料,它涵盖了大量用于提升Java编程技能和算法理解的题目。这份压缩包包含了三份文档:JAVA经典算法40题.doc、最新JAVA编程题全集_50题及答案.doc、50道JAVA...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    java面试题以及经典算法实现

    本资料集合了Java面试中常见的问题和经典算法的实现,旨在帮助应聘者提升自己的技能水平,顺利通过面试。 1. **Java基础知识** - **内存管理**:Java使用自动垃圾回收机制,理解如何分配、使用和回收内存是基础。...

    java经典算法题

    Java经典算法题是程序员在开发过程中常常需要面对的挑战,它们可以帮助我们提升编程思维,优化问题解决能力,尤其是在处理复杂数据结构和高效计算时显得尤为重要。这个压缩包中包含了一份名为"JAVA经典算法40题.doc...

    java笔试面试算法题

    在Java笔试面试中,算法题是考察候选者编程能力、逻辑思维和问题解决能力的关键环节。这些题目通常涵盖数据结构、排序、搜索、图论等多个领域,涉及到的基础知识包括但不限于以下内容: 1. **基础算法**:如冒泡...

    Java 算法与编程面试题

    【Java 算法与编程面试题】是针对求职者准备的一个重要环节,尤其是在IT行业中,熟练掌握算法和编程能力是必备技能。本题主要涵盖了两方面内容:身份证号码合法性验证以及两个文件中单词的交替合并。 首先,我们来...

    java常见算法题解析大全。

    此外,这个资源库还可能包含经典的算法小题,如回溯法、动态规划、贪心算法等。回溯法用于解决约束满足问题,通过试探性的步骤来解决问题,当发现某步无效时,会撤销这一步,尝试其他路径。动态规划则是一种通过将...

    Java面试经典算法

    Java面试经典算法 Java 面试经典算法是指在 Java 面试中经常会被问到的算法题目,这些题目涵盖了数据结构、算法设计、编程语言基础知识等方面的知识。本文总结了 17 道 Java 面试经典算法题目,并对每道题目进行了...

    Java面试题全集(上)(中)(下)合集

    这里我们将根据"Java面试题全集(上)(中)(下)合集"来探讨这些核心知识点。 1. **基础语法**:这部分通常考察Java的基本数据类型、变量、运算符、流程控制(if,switch,for,while,do...while)、方法的定义...

    面试知识点总结--java笔试算法题及答案.pdf

    在 Java 中,字符串分割算法是非常常见的面试题之一。本文中提供了一个使用 StringTokenizer 类实现字符串分割的示例代码,然而,该方法已不再被推荐使用,取而代之的是使用 String 类的 split 方法,该方法更简洁、...

    最热门的Java 算法面试题汇总

    以下是一些热门的Java算法面试题及其详细解释: 1. **双指针问题**:常用于解决数组相关的问题,如寻找两个数之和等于目标值,或者在有序数组中查找重复元素等。通过维护两个指针,一个从左向右移动,另一个从右向...

    50道Java程序算法题

    这份"50道Java程序算法题"的压缩包显然旨在帮助开发者提升算法设计和实现能力。下面,我们将深入探讨这些标签所涵盖的知识点,并根据提供的文件名推测可能的结构。 1. **Java基础**:作为Java程序员,对语言的基础...

    JAVA面试100题

    JAVA面试100题

    java面试题(算法+数据库)

    【Java面试题】 在Java面试中,面试官通常会考察候选人的算法基础以及数据库操作能力。这包括但不限于数据结构的理解、算法设计与分析、以及SQL的熟练运用。以下是相关知识点的详细介绍: 1. **算法基础**: - **...

Global site tag (gtag.js) - Google Analytics