`
21869551
  • 浏览: 46742 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java笔试算法题1

阅读更多

       原题如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.
       算法思路:显然是递归,初始序列122345,先从末两位(45)变化(45,54),然后末三位(345) ... 直到最后六位.怎样解决重复问题?很简单,由于是递增序列,每生成新序列可与前一生成序列比较,如<放弃当前序列。当然有更好效率,如预先预测。代码如下:

class test
{
  // 当前固定部分
  private String CurFixPart;
  private String PreGenNum;
 
public static void main(String[] args)
{
 test t=new test();
 t.GenControll("1111111111");
}

// 调整字符串s位置pos字符到最前
private String shift(String s, int pos)
{
String newStr;
if (s.length()>pos+1)
  newStr=s.substring(pos, pos+1)
        +s.substring(0, pos)
        +s.substring(pos+1);
else
  newStr=s.substring(pos)
        +s.substring(0, pos);
return newStr;
}

protected int Validate(String newNum)
{
  String newGenNum=CurFixPart+newNum;
 
  if (Integer.valueOf(newGenNum)<=Integer.valueOf(PreGenNum))
    return 0;
 
  if (newGenNum.substring(2,3).equals("4") ||
       (newGenNum.indexOf("35")!=-1) || (newGenNum.indexOf("53")!=-1))
    return 0;
     
  PreGenNum=newGenNum;
System.out.println(newGenNum);
return 0;
}
 
public void GenControll(String Base)
{
  PreGenNum="0";
CurFixPart="";
GenNext(Base, 0);
}

void GenNext(String varPart, int curPos)
{
if (varPart.length()==2)
{
  Validate(varPart);
  Validate(shift(varPart, 1));
  return;
 }
// Next Layer
String newGen=shift(varPart, curPos);
String SavedFixPart=CurFixPart;
CurFixPart=CurFixPart+newGen.substring(0,1);
GenNext(newGen.substring(1), 0);
CurFixPart=SavedFixPart;
// 同层递增
while (true)
{
if (curPos==varPart.length()-1) 
  break;
  // 预测是否重复
  curPos++;
if (Integer.valueOf(CurFixPart+shift(varPart, curPos))<=Integer.valueOf(PreGenNum))
    continue;
   
GenNext(varPart, curPos);
break;
}
}
}

分享到:
评论

相关推荐

    java笔试常见的算法题

    全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、...这是里面包含的算法,本人在准备笔试的时候找的,算法尽量采用最优的。 所有的代码均经过测试,个人觉得没有问题,如果哪位大牛找到错误,欢迎批评指正

    java笔试算法题40道

    根据提供的文件信息,我们可以归纳总结出以下几个主要的IT知识点: ### 1. 兔子繁殖问题(斐波那契数列) ...这些知识点涵盖了常见的数据结构、算法应用以及Java编程技巧,对于初学者来说是非常好的学习资源。

    java笔试面试算法题

    例如,"20081030131616.chm"可能包含历年面试题的解析和示例代码,而"笔试算法题.doc"可能提供了具体的题目供练习。通过深入学习和实践,可以提高自己在面试中的竞争力。 此外,熟悉C语言也是有益的,因为许多算法...

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

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

    一著名软件公司的java笔试算法题!

    该题目是一道典型的Java编程算法题,涉及到的主要知识点包括数组操作、字符串处理、递归算法以及条件判断。题目要求使用给定的数字1、2、2、3、4、5来生成所有可能的不同排列,同时满足特定的约束条件:“4”不能在...

    经典Java笔试算法解析和代码:二分查找.zip

    经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找...

    java笔试算法题及答案.doc

    Java笔试中的算法题通常涉及到数据结构、排序、字符串处理等方面的知识。以下是对两道题目及其解题思路的详细解析: 1. **升序与降序排序数组** 这道题目要求对输入的以逗号分隔的数字进行排序。首先,我们可以...

    java笔试算法题及答案.pdf

    "Java笔试算法题及答案" 本资源是一份Java笔试算法题及答案的 PDF 文件,涵盖了多个算法题目和解决方案。下面是从资源中提取的知识点: 知识点 1:Java 中的字符串分割 在 Java 中,字符串可以使用 `split()` ...

    Java面试笔试题大汇总(最全+详细答案)

    Java作为一门广泛使用的编程语言,其面试笔试题涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、数据库操作、设计模式、JVM优化等。以下是对这些知识点的详细阐述: 1. **...

    华为OD、大厂笔试算法题

    华为OD、大厂笔试算法题; 一共87题,每一题附答案(java语言),笔试时频繁出现的原题,想进大厂的小伙伴,欢迎下载; eg: 1、5键键盘的输出 有一个特殊的5键键盘,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键...

    java外包笔试题两套.zip

    外包公司常常会用Java笔试题来评估应聘者的技能水平。本压缩包"java外包笔试题两套.zip"包含了两套针对Java程序员的笔试题目,分别为"java外包笔试A卷.docx"和"java外包笔试F卷.docx",旨在测试应聘者的基础知识、...

    java经典算法练习题

    本压缩包包含了三个文档,分别是“JAVA经典算法40题.doc”、“最新JAVA编程题全集_50题及答案.doc”和“50道JAVA基础编程练习题.doc”,这些资源为初学者提供了大量的实践机会,有助于深入理解和运用Java。...

    java笔试算法题及答案

    根据给定的信息,我们可以从以下几个方面来探讨与Java笔试算法相关的知识点: ### 一、字符串分割及排序 #### 1. 使用`String.split()`方法替代`StringTokenizer` **背景介绍:** - `String.split()`方法在Java中...

    Java笔试题大集合及答案(另附各大公司笔试题)

    本资料集合了大量Java笔试题,旨在帮助求职者全面复习并准备Java相关的笔试环节,同时包含了各大公司的经典试题,以期提供更丰富的实践应用场景。 1. **基础语法**:这部分主要考察对Java基本语法的理解,如变量...

    2016年4月方正Java软件工程师笔试题

    【压缩包子文件的文件名称列表】方正Java笔试题 这个压缩包可能包含了当年方正公司Java软件工程师笔试的所有题目,包括但不限于Java语言基础、JVM原理、JavaEE相关技术、数据结构与算法等内容。考生可以通过分析...

    吉利汽车Java笔试面试题.zip_面试资料下载

    【吉利汽车Java笔试面试题】是一份专门为应聘者准备的面试资源,主要涵盖了Java编程语言在实际面试中的常见问题和知识点。这份资料旨在帮助求职者更好地理解和掌握Java核心技术,提高他们在吉利汽车公司或其他IT企业...

    java笔试面试题 (汇总)

    Java笔试面试题是Java开发者在求职过程中必须面对的重要环节,涵盖了基础语法、数据结构、算法、JVM、多线程、网络、设计模式等多个方面。以下是对这些知识点的详细解析: 1. **Java基础语法**:这是Java学习的起点...

    2020 兴业数金Java笔试题.docx

    本文档是关于2020兴业数金Java在线笔试题的知识点总结,涵盖了Java编程语言、计算机存储系统、多线程同步、MySQL数据库等多个方面的知识点。 一、Java编程语言 1. Java重载的几种方式:Java中的方法重载是指在同一...

Global site tag (gtag.js) - Google Analytics