- 浏览: 184000 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
枫了的红叶儿:
事务与存储过程的区别 -
黄进宝与wys:
...
Mysql事务处理 -
youshenxuzuo:
您好, 我有个问题想请教一下。关于start方法启动线程,自动 ...
java thread: run方法和john方法 -
Leisurez:
[i][u]引用[list]
[*]
[/list][/u][ ...
Hibernate的查询方式 -
Leisurez:
[flash=200,200][/flash]
Hibernate的查询方式
1.从键盘输入一组数(用,分割),排序后输出
【分析】使用Scanner类获取键盘输入。以下代码都放在main函数中
System.out.println("请输入一串数字,用,隔开:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); String[] strarr = str.split(","); int len = strarr.length; int[] num = new int[len]; for(int i=0;i<len;i++){ num[i]=Integer.parseInt(strarr[i]); } for(int i=0;i<len-1;i++){ for(int j=i+1;j<len;j++){ if(num[i]>num[j]){ int tem = num[i]; num[i]=num[j]; num[j]=tem; } } } for(int k : num){ System.out.print(k+" "); }
方法二:使用ArrayList,纯为了练习
System.out.println("请输入一串数字,用,隔开:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); ArrayList<Integer> list = new ArrayList<Integer>(); for(String s : strarr){ list.add(Integer.parseInt(s)); } int len = list.size(); for(int i=0;i<len-1;i++){ for(int j=i+1;j<len;j++){ if(list.get(i)>list.get(j)){ int tem = list.get(i); list.set(i, list.get(j)); list.set(j, tem); } } } for(int k : list){ System.out.print(k+" "); }
2. 编程实现:从字符中获取连续数组序列,如字符串"a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a"中可以得到的连续数字序列为1234556.【注】:只考虑一位,因此最长的数字序列为:0123456789
【方法一】
String str = "a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a"; int len = str.length(); ArrayList<Integer> array = new ArrayList<Integer>(); ArrayList<Integer> result = new ArrayList<Integer>(); for(int i = 0;i<len; i++){ char tem = str.charAt(i); if(tem>='0'&&tem<='9'){ array.add(Integer.parseInt(String.valueOf(tem))); } } int size = array.size(); int first = array.get(0); result.add(first); for(int i =1,j=0;i<size;i++){ if(array.get(i)-result.get(j) == 1){ result.add(array.get(i)); j++; } } for(int k : result){ System.out.print(k+" "); }
【方法er】使用正则匹配,纯为练手
String str = "a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a"; // String[] num = Pattern.compile("[\\D]").split(str,-1); // \d表示数字,\D表示非数字(等价于^0-9) String[] num = Pattern.compile("[^0-9]").split(str,-1); int k = 0; ArrayList<Integer> result = new ArrayList<Integer>(); for(int i = 0;i<num.length;i++){ if(num[i]!=null&&!num[i].equals("")){ result.add(Integer.parseInt(String.valueOf(num[i]))); k = i; break; } } for(int i = k,j=0;i<num.length;i++){ if(num[i]!=null&&!num[i].equals("")){ int tem =Integer.parseInt(String.valueOf(num[i])); if(tem-result.get(j)==1){ result.add(tem); j++; } } } for(int n : result){ System.out.print(n+" "); }
3.编程实现单链表逆转
4.用递归方法实现斐波那契数列的前10项之和。
(可参考:http://jerrygao.iteye.com/blog/101283)
5. 500人围成一圈报数,数到3的人出列,下面的人继续从1开始报数,求最后一个出列的人的编号(用数组模拟链表实现)。这实际上是一个约瑟夫出圈问题: n个人围成一个圈,一个个首尾相连的圈报数,从第一个开始报数,报到m的人出圈,剩下的人继续从1开始报数,直到所有人都出圈为止。 两种方法实现,数据和链表。
6.
算法程序题:
该公司笔试题就1个,要求在10分钟内作完。
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
基本思路:
1 把问题归结为图结构的遍历问题。实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,所有结点的遍历路径就是最后对这6个数字的排列组合结果集。
2 显然这个结果集还未达到题目的要求。从以下几个方面考虑:
1. 3,5不能相连:实际要求这个连通图的结点3,5之间不能连通, 可在构造图结构时就满足改条件,然后再遍历图。
2. 不能有重复: 考虑到有两个2,明显会存在重复结果,可以把结果集放在TreeSet中过滤重复结果
3. 4不能在第三位: 仍旧在结果集中去除满足此条件的结果。
我采用二维数组定义图结构,最后的代码是:
- import java.util.Iterator;
- import java.util.TreeSet;
- public class TestQuestion {
- private String[] b = new String[]{ "1" , "2" , "2" , "3" , "4" , "5" };
- private int n = b.length;
- private boolean [] visited = new boolean [n];
- visited =falsh;
- private int [][] a = new int [n][n];
- private String result = "" ;
- private TreeSet TreeSet = new TreeSet();
- public static void main(String[] args) {
- new TestQuestion().start();
- }
- private void start() {
- for ( int i = 0 ; i < n; i++) {
- for ( int j = 0 ; j < n; j++) {
- if (i == j) {
- a[i][j] = 0 ;
- } else {
- a[i][j] = 1 ;
- }
- }
- }a[3 ][ 5 ] = 0 ;
- a[5 ][ 3 ] = 0 ;
- for ( int i = 0 ; i < n; i++) {
- this .depthFirstSearch(i);
- }
- Iterator it = set.iterator();
- while (it.hasNext()) {
- String string = (String) it.next();
- if (string.indexOf( "4" ) != 2 ) {
- System.out.println(string);
- }
- }
- }
- private void depthFirstSearch( int startIndex) {
- visited[startIndex] = true ;
- result = result + b[startIndex];
- if (result.length() == n) {
- TreeSet .add(result);
- }
- for ( int j = 0 ; j < n; j++) {
- if (a[startIndex][j] == 1 && visited[j] == false ) {
- depthFirstSearch(j);
- } else {
- continue ;
- }
- }
- result = result.substring(0 , result.length() - 1 );
- visited[startIndex] = false ;
- }
- }
import java.util.Iterator; import java.util.TreeSet; public class TestQuestion { private String[] b = new String[]{"1", "2", "2", "3", "4", "5"}; private int n = b.length; private boolean[] visited = new boolean[n]; visited =falsh; private int[][] a = new int[n][n]; private String result = ""; private TreeSet TreeSet = new TreeSet(); public static void main(String[] args) { new TestQuestion().start(); } private void start() { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) { a[i][j] = 0; } else { a[i][j] = 1; } } }a[3][5] = 0; a[5][3] = 0; for (int i = 0; i < n; i++) { this.depthFirstSearch(i); } Iterator it = set.iterator(); while (it.hasNext()) { String string = (String) it.next(); if (string.indexOf("4") != 2) { System.out.println(string); } } } private void depthFirstSearch(int startIndex) { visited[startIndex] = true; result = result + b[startIndex]; if (result.length() == n) { TreeSet .add(result); } for(int j = 0; j < n; j++) { if (a[startIndex][j] == 1 && visited[j] == false) { depthFirstSearch(j); } else { continue; } } result = result.substring(0, result.length() -1); visited[startIndex] = false; } }
发表评论
-
Core Java Interview Questions Answers in Finance domain
2012-02-27 11:10 10681. What is immutable object? Ca ... -
Java transient 关键字
2012-02-03 10:09 5691、transient关键字只能修饰变量,而不能修饰方法和类。 ... -
Java 序列化的问题
2012-01-17 17:39 1159【本文为转载,以做备忘,对其中的例子做了修改,原文地址:htt ... -
Java的参数传递
2012-01-16 11:41 1024有人说java 参数传递在对primitive类型的参 ... -
Java 异常知识点
2012-01-12 17:00 1951一、异常的继承结构 Java异常的基类为java ... -
java thread: run方法和john方法
2012-01-11 11:33 41691、要实现多线程 ... -
java 格式化输出 printf 总结
2012-01-09 18:17 24774通过一个具体实例说明: double d = 345.67 ... -
scjp 知识点
2012-01-05 22:03 966标识符 □标识 ... -
JAVA枚举类型入门
2011-05-20 09:41 995Java 代码的两个基本的构造块是类 和接口。 ... -
JAVA中的方法覆盖/覆写的十大原则
2011-05-19 14:32 4446什么是方法覆盖 如果在子类中定义的一个方法,其名称、返 ... -
Java Map 遍历方法
2011-04-26 16:34 906第一种: Map map = new HashMap ... -
【转】程序员必知:Java代码常见的十种错误(2)
2011-03-10 15:52 1087六、常见错误6:检查new 操作的结果是否为null ... -
【转】程序员必知:Java代码常见的十种错误(1)
2011-03-10 15:48 1034【IT168 技术】每一个程序员在编写代码的过程中都免不了 ... -
Java基础知识是刨根问底
2011-02-25 16:26 10561、类A实现了接口I,A能否改变I中定义的变量? 2、 ... -
JDK1.5/1.6新特性总结
2011-02-14 12:39 1236一、JDK1.5新特性 1、泛型(Generic) 可以在编 ... -
XML知识点备忘
2011-01-22 10:58 13341.xml名称空间通过一系 ... -
JDBC连接数据库的完整步骤
2011-01-22 00:13 8208JAVA连接数据库的方式有多种,根据所需要的不同数据库驱动分, ... -
Java IO 知识点备忘
2011-01-21 14:16 10331. java io 库采用Decorator设计模式 2. ... -
Java 试题备忘
2011-01-18 15:36 9191. Given the following class de ... -
java基础知识备忘拾遗
2011-01-17 23:21 1304一、接口 1.接口中的方法默认都是public和abstra ...
相关推荐
│ │ │ java编程思想中文303.pdf │ │ │ java编程思想中文304.pdf │ │ │ java编程思想中文305.pdf │ │ │ java编程思想中文306.pdf │ │ │ java编程思想中文307.pdf │ │ │ java编程思想中文308.pdf │...
该套面试题汇总大全,包含大量经典的Java面试题以及答案,希望对大家有帮助。 1. Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。在并发...
"509道Java面试题汇总与解析"这个压缩包文件显然是为准备Java程序员面试的人精心编排的资源集合。它可能包含了大量的Java基础知识、进阶概念、设计模式、框架以及实际开发中的问题解答。 首先,Java的基础知识是...
│ │ │ java编程思想中文303.pdf │ │ │ java编程思想中文304.pdf │ │ │ java编程思想中文305.pdf │ │ │ java编程思想中文306.pdf │ │ │ java编程思想中文307.pdf │ │ │ java编程思想中文308.pdf │...
这里我们将深入探讨Java编程语言中的核心概念、高级特性以及常见问题。 1. **Java基础** - 类与对象:Java是一种面向对象的语言,理解类的定义、构造器、封装、继承和多态性至关重要。 - 内存管理:了解Java内存...
│ │ │ java编程思想中文303.pdf │ │ │ java编程思想中文304.pdf │ │ │ java编程思想中文305.pdf │ │ │ java编程思想中文306.pdf │ │ │ java编程思想中文307.pdf │ │ │ java编程思想中文308.pdf │...
Java面试题精华汇总 在Java领域,面试是一个关键环节,用来评估候选人的技术实力和问题解决能力。以下是一些常见的Java面试知识点,涵盖了基础、进阶到高级的各个方面。 1. **Java基础知识** - 类与对象:了解类...
│ │ │ java编程思想中文303.pdf │ │ │ java编程思想中文304.pdf │ │ │ java编程思想中文305.pdf │ │ │ java编程思想中文306.pdf │ │ │ java编程思想中文307.pdf │ │ │ java编程思想中文308.pdf │...
│ │ │ java编程思想中文303.pdf │ │ │ java编程思想中文304.pdf │ │ │ java编程思想中文305.pdf │ │ │ java编程思想中文306.pdf │ │ │ java编程思想中文307.pdf │ │ │ java编程思想中文308.pdf │...
通过对这些真题的学习和理解,可以深入掌握Java编程的基础知识、进阶技能以及面试常见问题,提升自己的竞争力。 一、Java基础 在准备这类笔试时,首先需要扎实的Java基础知识,包括但不限于: 1. Java语法:变量、...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而备受开发者青睐。在面试和笔试中,Java题目通常会涵盖基础语法、数据结构与算法、多线程、异常处理、集合框架、IO流、网络编程等多个方面...
这份"面试题汇总"包含了丰富的知识内容,旨在帮助求职者更好地准备面试,提高成功几率。以下是一些关键的Java面试知识点: 1. **Java基础**: - 类与对象:理解面向对象编程的基本概念,如封装、继承、多态。 - ...
Java设计模式是面向对象编程中的一种最佳实践,它是一系列被广泛接受并应用于解决常见问题的解决方案。设计模式是经过无数开发者验证过的成熟代码设计经验的汇总,它们旨在提高代码的可重用性、可读性和可靠性。学习...