您的位置:首页 > 其它

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

2014-09-24 21:16 489 查看
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: