標籤:去哪兒網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校招軟體研發筆試題(杭州站)