码迷,mamicode.com
首页 > 其他好文 > 详细

去哪儿网2015校招软件研发笔试题(杭州站)

时间:2014-09-25 00:02:58      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:去哪儿网2015校招软件研发笔试题杭州站   则输出-a.相反   则输出+a   如果字符a在str1中出现   

1、String padString(String string,int minLength,char padChar);
    就是在string前用padChar把string填充到至少minLength长度
    如("7",3‘0‘),得到的结果是"007";
    如("2012",3,‘0‘),的到的结果是"2012”;

 minLength可能是负数


	public static void main(String[] args) {
		System.out.println(padString("7", 3, '0'));
		System.out.println(padString("2012", 3, '0'));
	}
	
	
	static String padString(String string,int minLength,char padChar){
		int len = string.length();
		if(minLength<0 || minLength<len){
			return string;
		}
		StringBuffer sb = new StringBuffer();
		int pads = minLength - len;
		while(pads-->0){
			sb.append(padChar);
		}
		sb.append(string);
		return sb.toString();
	}

2、命令解析
对于命令
    -name jack -age 20 -address "HangZhou ZheDa Road"
要变成[-name jack, -age 20, -address "HangZhou ZheDa Road"]
命令由参数和值对组成,参数以-开头,参数和值之间,值和值之间都是用空格隔开,
双引号""之间的值当做一个整体
来处理。所有参数和值只包括英文字母,数字,减号和双引号

public static void main(String[] args) {
		System.out.println(parser("-name jack -age 20 -address \"HangZhou ZheDa Road\""));
		System.out.println(parser("    -name jack -age 20 -address \"HangZhou ZheDa Road\""));
		System.out.println(parser("-name    jack -age 20    -address \"HangZhou ZheDa Road\""));
		System.out.println(parser("-name jack -age 20 -address \"HangZhou ZheDa Road   \"   "));
	}
	
	static String parser(String str){
		String params[] = str.split("-");
		for(int i=0;i<params.length;i++){
			params[i]=params[i].trim();//去掉前后空格
			params[i]=params[i].replaceAll("\\s+", " ");//去掉中间空格
		}
		StringBuffer sb = new StringBuffer();
		sb.append("[");
		for(int i=0;i<params.length;i++){
			if(params[i].length()!=0 && !params[i].equals("")){
				sb.append("-");
				sb.append(params[i]);
				if(i!=params.length-1){
					sb.append(", ");
				}
			}
		}
		sb.append("]");
		return sb.toString();
	}

3,dif(String str1,String str2);
 输出两个字符串中不同的的字符,如果字符a在str1中出现,而没有在str2当中出现,则输出-a.相反,则输出+a; 字符串当中重复的子字符串不输出。<br>
 abcde,bcde 输出-a <br>
 dabc, aabcef 输出+a,-d,+e,+f <br>
 abcdefe,aabcadef输出+a,+a,-e;
 
 思路:把26个字母映射成一个26大小的整数数组flag,初始全为0,a对应flag[0],如果在str2中出现,则加1,如果在str1中出现,则减1,
 最后遍历这个数组,打印出现的次数即可。


public static void main(String[] args) {
		System.out.println(dif("abcde","bcde"));
		System.out.println(dif("dabc","aabcef"));
		System.out.println(dif("abcdefe","aabcadef"));
	}

	static String dif(String str1, String str2) {
		int flag[] = new int[26];
		StringBuffer sb = new StringBuffer();
		str1 = str1.toLowerCase().trim();
		str2 = str2.toLowerCase().trim();
		for(int i=0;i<str1.length();i++){
			flag[str1.charAt(i)-'a']--;
		}
		for(int i=0;i<str2.length();i++){
			flag[str2.charAt(i)-'a']++;
		}
		for(int i=0;i<flag.length;i++){
//			System.out.println("flag["+i+"]="+flag[i]);
			if(flag[i]<0){
				int count = Math.abs(flag[i]);
				for(int j=0;j<count;j++){
					sb.append("-");
					sb.append((char)(i+'a'));
					sb.append(",");
				}
			}else if(flag[i]>0){
				for(int j=0;j<flag[i];j++){
					sb.append("+");
					sb.append((char)(i+'a'));
					sb.append(",");
				}
			}
		}
		if(sb.lastIndexOf(",")==sb.length()-1)
			sb.deleteCharAt(sb.length()-1);
		return sb.toString();
	}




去哪儿网2015校招软件研发笔试题(杭州站)

标签:去哪儿网2015校招软件研发笔试题杭州站   则输出-a.相反   则输出+a   如果字符a在str1中出现   

原文地址:http://blog.csdn.net/zheng0518/article/details/39529181

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!