java 面试 百一测评

简介:   java面试题 20170908   第一题 使用 list  map 效果,会比我自己写的算法,快很多倍,所以算法应该是类似list map 的更快   package com.

 

java面试题 20170908


 

第一题 使用 list  map 效果,会比我自己写的算法,快很多倍,所以算法应该是类似list map 的更快

 

package com.baoy.cn.study201707.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Mainshi1 {

	public static void main(String[] args) {
		String[] a = { "a", "b", "a","c", "a", "aaa", "aaa" ,"a","b","c"};
		long start1 = System.currentTimeMillis();
		String[] b = compare(a);
		String resultbString = Arrays.toString(b);
	    System.out.println(resultbString.substring(1, resultbString.length()-1).replace(" ",""));
	    long end1 = System.currentTimeMillis();
	    
	    
	    
		long start2 = System.currentTimeMillis();
		List<String> compare2 = compare2(a);
		String[] resultarr = (String[]) compare2.toArray(new String[compare2.size()]);
        String resultString = Arrays.toString(resultarr);
        System.out.println(resultString.substring(1, resultString.length()-1).replace(" ",""));
        long end2= System.currentTimeMillis();
        
        System.out.println((end1-start1)+"\r\n"+(end2-start2));
	}

	public static boolean compareLength(String[] param, int index, int current) {
		if (param[index].length() == param[current].length()) {
			return true;
		}
		return false;
	}

	public static boolean compareContent(String[] param, int index, int current) {
		if (compareLength(param, index, current)) {
			char[] indexChar = param[index].toCharArray();
			int i = 0;
			while (i < indexChar.length) {
				if (param[current].charAt(i) != indexChar[i]) {
					return false;
				}
				i++;
			}
			return true;
		} else {
			return false;
		}
	}

	public static String[] compare(String[] param) {
		boolean[] flag = new boolean[param.length];
		for (int i = 0; i < flag.length; i++) {
			flag[i] = true;
		}
		String[] temp = new String[param.length];
		for (int i = 0; i < param.length; i++) {
			if (flag[i]) {
				temp[i] = param[i];
				int k = 0;
				for (int j = i + 1; j < temp.length; j++) {
					if (compareContent(param, i, j)) {
						k++;
						flag[j] = false;
						temp[j] = param[j] + (k == 0 ? "" : k);
					}
				}
			}
		}
		return temp;
	}

	
	public static List<String> compare2(String[] param) {
		List<String> list = new ArrayList<String>();
		Map<String,Integer> map  =  new HashMap<String, Integer>();
		for (int i = 0; i < param.length; i++) {
			if (!map.containsKey(param[i])) {
				map.put(param[i],0);
				list.add(param[i]);
			}else{
				map.put(param[i], map.get(param[i])+1);
				list.add(param[i]+map.get(param[i]));
			}
		} 
		return list;
	}
	
	
}

 
 

 

package com.baoy.cn.study201707.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Mainshi2 {
	public static void main(String[] args) throws ParseException {
		String[] params = {"20170101 00:02:01", "20170101 05:04:02" ,"20170101 10:06:03", "20170101 15:08:04"};
		test(params);
	}
	
	public static void test(String []param) throws ParseException{
		SimpleDateFormat sdf  =   new  SimpleDateFormat( "yyyyMMdd HH:mm:ss" );
		 Date date1 = sdf.parse(param[0]);
		 Date date2 = sdf.parse(param[1]);
		 long a = date2.getTime() -date1.getTime();
		 Calendar calendar=Calendar.getInstance();  
		 calendar.setTimeInMillis(a);
		    
		 int hour =calendar.get(Calendar.HOUR);    
		 int minute =calendar.get(Calendar.MINUTE);    
		 int seconds =calendar.get(Calendar.SECOND);   
		 long day = a / (1000 * 60 * 60 * 24);
		 long month=  a / (1000 * 60 * 60 * 24) /30 ; 
		 long year=  a / (1000 * 60 * 60 * 24)/365;
		 System.out.println(
				 (year > 0 ? year+"year":"")+
				 (month > 0 ? month+"month":"")+
				 (day > 0 ? day+"day":"")+
				 hour+"hour"+minute+"minute"+seconds+"second"
				 );
		  
	}

}

 



 

package com.baoy.cn.study201707.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Mainshi3 {

	public static void main(String[] args) {
		String[] params = { "A", "B", "C", "D" };
		String[] rules = { "A->C", "B->C", "D->C" };
        List<String> list = new ArrayList<String>();
        order(list, "","", params); 
  //      [ ABCD, ABDC, ACBD, ACDB, ADBC, ADCB, 
  //        BACD, BADC, BCAD, BCDA, BDAC, BDCA, 
  //        CABD, CADB, CBAD, CBDA, CDAB, CDBA,
  //        DABC, DACB, DBAC, DBCA, DCAB, DCBA]
        
        List<String> ordersort = ordersort(list, rules); 
        
        String[] resultarr = (String[]) ordersort.toArray(new String[ordersort.size()]);
        String resultString = Arrays.toString(resultarr);
        System.out.println(resultString.substring(1, resultString.length()-1).replace(" ",""));

	}

	public static List<String> ordersort(List<String> res,String[] rules){
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < res.size(); i++) {
			String line = res.get(i);
			boolean flag = true;
			for (int j = 0; j < rules.length; j++) {
				String[] rule = rules[j].split("->"); 
				if (line.indexOf(rule[0]) > line.indexOf(rule[1])) {
					flag =false;
				}
			}
			if (flag) {
				list.add(line);
			}
		}
		return list;
	}
	
	public static void order(List<String> res,String preffix,String temp, String[] a) {
		preffix += temp ;
		if (a.length > 1) {
			for (int i = 0; i < a.length; i++) {
				List<String> list = Arrays.asList(a); 
				List<String> list2 = new ArrayList<String>(Arrays.asList(new String[list.size()]));
				Collections.copy(list2, list);  
				temp = a[i];
				list2.remove(i);
				String[] b = (String[]) list2.toArray(new String[list2.size()]);
				order(res,preffix,temp, b);
			}
		} else {
			res.add(preffix+a[0]);
		}
	}
	

}

 

 



 

package com.baoy.cn.study201707.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Mainshi4 {

	public static void main(String[] args) {
		int N1 =2;
		int N2 =3 ; 
		print(N1, N2);
	}
	
	public static void print(int n1 ,int n2){
		if(n1 ==0 && n1 ==1 &&n2 ==0 && n2 ==1){
			System.out.println("null");
		}
		String n1s = getCode(n1);
		String n2s = getCode(n2);
		
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < n1s.length()  ; i++) {
			String one= n1s.substring(i, i+1);
			for (int j = 0; j < n2s.length(); j++) {
				String two= n2s.substring(j, j+1);
				list.add(one+two);
			}
		}
		  String[] arr = (String[]) list.toArray(new String[list.size()]);
	        String resultString = Arrays.toString(arr);
	        System.out.println(resultString.substring(1, resultString.length()-1).replace(" ",""));
	}

	public static String getCode(int key) {
		switch (key) { 
		case 1:

			return "";
		case 2:

			return "abc";
		case 3:

			return "def";
		case 4:

			return "ghi";
		case 5:

			return "jlk";
		case 6:

			return "mno";
		case 7:

			return "pqrs";
		case 8:

			return "tuv";
		case 9:

			return "wxyz";
		case 0:

			return ""; 
		default:
			break;
		}
		return "";
	}

}

 


package com.baoy.cn.study201707.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Mainshi6 {
    

	public static void main(String[] args) {
		int[] weight =new int []{  7,  5,  3,  2,  6,  1,  4,  9}; 
		String[] s =new String []{"A","B","C","D","E","F","G","H"}; 
		sort(weight, s, 5);
	}
	
	public static void sort(int[] weight,String[] s,int n){
		List <Alphabet> list  =  new ArrayList<Alphabet>();
		int []all = new int [weight.length];
		for (int i = 0; i < s.length; i++) {
			list.add(new Alphabet(weight[i],s[i])); 
		} 
		Collections.sort(list);
	    for (int i = 0; i < n; i++) {
	    	System.out.print(list.get(i).alphabet);
		}
		
	}
	
	
	
}
class Alphabet implements Comparable<Alphabet>{
	public int allweight;
	public String alphabet;
	
	public Alphabet(){}
	public Alphabet(int allweight, String alphabet) {
		this.allweight = allweight;
		this.alphabet = alphabet;
	}


	@Override
	public int compareTo(Alphabet o) { 
		if (this.allweight > o.allweight) {
			return 1;
		}else if (this.allweight ==  o.allweight) {
			return 0;
		}  
		return -1;
	}
	
}

  

 



 

 

package com.baoy.cn.study201707.test;

import java.util.ArrayList;
import java.util.List;

public class Mianshi9 {

	public static void main(String[] args) {
	
		Node a = new Node("A", null); 
		Node b = new Node("B", null); 
		Node c = new Node("C", null); 
		Node d = new Node("D", null); 
		Node e = new Node("E", null); 
		Node f = new Node("F", null); 
		Node g = new Node("G", null); 
		Node h = new Node("H", null); 
		Node i = new Node("I", null); 
		
		c.setChild(f);
		c.setChild(g);
		c.setChild(h);
		
		b.setChild(e);
		d.setChild(i);
		
		a.setChild(b);
		a.setChild(c);
		a.setChild(d);
		
		a.test(a, c);
		
	}
	
}



class Node{
	public String data;
	public List<Node> list;
	public Node(){}
	public Node(String data, List<Node> list) {
		this.data = data;
		this.list = list;
	}
	
	public void setChild(Node node){
		if (list == null ) {
			list = new ArrayList<Node>();
		} 
		list.add(node);
	} 
	
	public void  order(Node localroot,Node red){
		 if(localroot.list != null){
		for (Node node : localroot.list) {
			if (!node.data.equals(red.data)) {
				System.out.print(node.data);
			}
		}
		for (Node node : localroot.list) {
			if (!node.data.equals(red.data)) {
				order(node, red);
			}
		}  
		 }
	}
	
	public void test(Node root ,Node red){
		System.out.print(root.data);
		root.order(root, red);
	}
	
}

  

 



 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者 

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。

 

个人主页http://knight-black-bob.iteye.com/



 
 
 谢谢您的赞助,我会做的更好!

目录
相关文章
|
13天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
42 2
|
1天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
23 14
|
18天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
23天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
19天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
41 4
|
20天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
70 4
|
2月前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
96 1
Java面试题之Java集合面试题 50道(带答案)
|
2月前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
55 5
|
2月前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
22 1
|
2月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
30 3

热门文章

最新文章

下一篇
无影云桌面