去哪儿2015笔试题JAVA实现

第一题代码:

分析:将字符数组中的每个字符串,找出其中最长的那个与字符数组中长度进行比较:

a、当最长的字符串的长度大于等于字符数组的长度时,直接输出

b、当最长的字符串的长度小于字符数组的长度时,找出该长度下整数值最大的那个字符串,在前面部0输出

package com.njupt;

public class Heia {

	public String MaxLength(String[] string){
		int max=Integer.valueOf(string[0]);
		int index=0;
		for(int i=1;i<string.length;i++){
			int temp=Integer.valueOf(string[i]);
			if(max<temp){
				max=temp;
				index=i;
			}
		}
		if(string[index].length()>=string.length){
			return string[index];
		}
		else{
			String str="";
			int tem=string.length-string[index].length();
			for(int j=0;j<tem;j++){
				str +="0";
			}
			str +=string[index];
			return str;
		}
	}

	public static void main(String[] args){
		String[] string={"","2","0"};
		Heia h=new Heia();
		System.out.println(h.MaxLength(string));
	}

}

  

第二题代码:(代码可能还有点问题,等待修改)

import java.util.ArrayList;

public class Test {

	public void QuNaer(String string){

		ArrayList<String> alist=new ArrayList<>();
		string=string.trim();
		String str=string.valueOf(string.charAt(0));
		for(int i=1;i<string.length();i++){
			if(string.charAt(i)==‘-‘){
				str=str.trim();
				alist.add(str);
				str="-";
			}
			else{
				if(string.charAt(i)!=‘ ‘){
					str +=string.charAt(i);
				}
				else{
					if(string.charAt(i-1)!=‘ ‘){
						str +=" ";
					}
				}
			}
		}
		str=str.trim();
		alist.add(str);
		System.out.println(alist);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String string="-name  Lily  -age 21     -school                         \"zhao                                        yan\"";
		//String string ="    zhao   yan     ";
		Test t=new Test();
		t.QuNaer(string);
	}

}

  

第三题代码:

分析:因为该题的目标是如何使得字符串a通过添加或者减少一下字符,最终得到字符串b

注:字符串a=“bc“,字符串b=”cb“;要进行+c,-c操作

具体做法:

1、遍历字符串a,(当前a的位置为i);

2、判断字符串中第i个位置的字符(a.CharAt(i))是在b中存在;

    a、如果存在,从b第一个字符(j=0)开始查找第一个与字符串a当前位置i相等的字符,并b之前字符依次进行+b对应的字符b.CharAt(j),最后将b中      j+1位置前的字符都删除

    b、如果不存在,执行-a.CharAt(i)操作。

3、当遍历完字符串a时,判断字符串b中是否还有字符,一次执行+b.CharAt(j)。

package com.njupt;

public class Cont {

	public String diff(String a,String b){
		String string="";
		for(int i=0;i<a.length();i++){
			String str=String.valueOf(a.charAt(i));
			if(b.contains(str)){
				int j=0;
				//System.out.println(b.charAt(j)!=a.charAt(i));
				while(b.charAt(j)!=a.charAt(i)){
					string += "+"+b.charAt(j)+",";
					++j;
				}
				b=b.substring(j+1);

			}
			else{
				string += "-"+a.charAt(i)+",";
			}
		}
		for(int i=0;i<b.length();i++){
			string += "+"+b.charAt(i)+",";
		}
		return string;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String string1="abaced";
		String string2="dabababacdb";
		Cont c= new Cont();
		System.out.println(c.diff(string1, string2));
		//System.out.println(string1.substring(1));

	}

}

  

时间: 2024-12-15 01:47:55

去哪儿2015笔试题JAVA实现的相关文章

去哪儿2015笔试题:寻找字符串的差异

去哪儿的一道笔试题. 给定两个字符串a,b:找出两个字符串中不一样的字符串.如存在于a而不存在于b,则将该字符输出,同时.加一个"-"标记:若存在于b而不存在于a,则输出该字符,同时以"+"标记.若是同时存在于a.b中,则不输出.假设字符串是由字母组成. 如: a="abc",b="aabcbc",则输出为"+a,+b,+c": a="abcde",b="bcdef"

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方法对这个数组进行第一次排序,排序得到的结果恰好是按字典序排序,而字典序又恰好是数字从0-9的顺序,恰好符合这个要求.最后进行检验下,有的可能需要调换下顺序使得数最小. package com.cn.qunar.test; /** * @author 刘利娟 [email protected] * @

华为 2015 笔试题练习

1.2015 华为 (1): #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stddef.h> int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; } int main() { char strIn[4096] = {'\0'}; char strTemp[4096] = {'\0'}

2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(flight.2),我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果.使用人类的已有经验和知识$(travel.1)来进行,是一件$(travel.2)的事情” word.conf flight=也不是:衣

阿里2015笔试题

分析:js有两种类型,基本数据类型和引用类型,数组是引用类型,执行第二行不仅仅是赋值,array2还生成了一个指针指向array1,也就是array2引用了array1,不管array1.array2其中有一个改变时,两个数组都会改变,执行第二行后array2和array1都等于[1,2],执行第三行后array1和array2都变为[2,2],执行第四行后,array1和array2都变为[2,2,3] 这题不用说,送分题,肯定没有float 其实做题的时候不是特别理解,但还是知道有‘重排‘这

2016去哪网笔试题二

第二道题目的题意大概是给定三个无序数组A,B,C:这三个数组中各自的数字没有重复,但是可能存在同时在三个数组中的数字. 如果有请按从小到大的顺序输出,如果没有不输出. 1 #include <iostream> 2 #include <vector> 3 #include <stdio.h> 4 #include <stdlib.h> 5 //#include <cstdio.h> 6 #include <string> 7 #inc

2016去哪网笔试题一

自己写的代码,供大家参考一下 #include <iostream> #include <vector> #include <stdio.h> #include <stdlib.h> //#include <cstdio.h> #include <string> #include <map> using namespace std; struct kenerl { int major; int mirror; int le

2014年去哪儿网笔试题--一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色...

一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色,余数为0着色为red,1为blue,2为green,3为black,可以理解为生成4中颜色的棋子放入棋盘,如果存在其中同色五星连珠的情况(规则通五子棋),找出任意一组,输出5个棋子的位置下标值. 只是用最笨的方法实现一下: public class FiveColor { public void test(){ int a[][]=new int[10][10]; for(int i=0

趋势科技2015笔试题-南京