去哪儿网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可能是负数
2、命令解析
对于命令
-name jack -age 20 -address "HangZhou ZheDa Road"
要变成[-name jack, -age 20, -address "HangZhou ZheDa Road"]
命令由参数和值对组成,参数以-开头,参数和值之间,值和值之间都是用空格隔开,
双引号""之间的值当做一个整体
来处理。所有参数和值只包括英文字母,数字,减号和双引号
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,
最后遍历这个数组,打印出现的次数即可。
就是在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杭州站(软件研发)笔试题
- 下列不属于hash碰撞解决方法的是()。----阿里巴巴2015校招研发在线笔试题
- 阿里2015校招笔试题 - 研发工程师
- 2015校招 面试(软件研发)
- 针对外部存储器(如磁盘)上存放的程序和数据,说法正确的是()。----阿里巴巴2015校招研发在线笔试题
- 深圳科陆集团2015校招软件开发笔试题
- 蘑菇街2015校招 Java研发笔试题 详解
- 美团网2015校招研发笔试题(2014-9-11,哈尔滨哈工大站)
- 去哪儿网2015校招研发类笔试题(2014-9-10,大连站)
- 百度移动研发2015校招笔试题
- 阿里巴巴2015校招研发在线笔试题
- 去哪儿网2015春季校招笔试--回忆版
- 2015 阿里巴巴 校招研发在线笔试题
- 笔试真题解析 ALBB-2015 校招研发在线笔试题
- 蘑菇街2015校招 Java研发笔试题 详解,2015java
- 去哪儿网2015春季校招笔试--回忆版
- 2012年百度软件研发工程师(上海)笔试题-杭州站
- 2018小红书校招软件研发在线笔试编程第二题
- 去哪儿网2015校招研发类笔试题
- 有多少个进程被 fork 出来了?----阿里巴巴2015校招研发在线笔试题