2015去哪兒校招杭州站軟件研發筆試題
9月23日參加去哪兒筆試題目了,我投的是研發崗位,筆試題目是三道程序設計題目。
參加筆試的時候用c寫的,處理字符串很麻煩。由于時間關系,第三題邏輯有點不清粗;貋碇,我就把題目又用java寫了一遍。現在對第三題仍然不能夠完全解答出來。
1,String padString(String string,int minLength,char padChar);
就是在string前用padChar把string填充到至少minLength長度
如("7",3'0'),得到的結果是"007";
如("2012",3,'0'),的到的結果是"2012”;
minLength可能是負數
public class padString {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
String padString(String string,int minLength,char padChar){
if(minLength
{
return string;
}
StringBuilder sb = new StringBuilder();
int pads = minLength - string.length();
for(int i=0;i
{
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 class CommandParser {
public static void main(String[] args) {
CommandParser cp = new CommandParser();
String res = null;
res = cp.parseCommand("-name jack -age 20 -address \"HangZhou ZheDa Road\"");
System.out.println(res);
res = cp.parseCommand(" -name jack -age 20 -address \"HangZhou ZheDa Road\"");
System.out.println(res);
res = cp.parseCommand("-name jack -age 20 -address \"HangZhou ZheDa Road\"");
System.out.println(res);
res = cp.parseCommand("-name jack -age 20 -address \"HangZhou ZheDa Road \" ");
System.out.println(res);
}
String parseCommand(String com)
{
//分解成多個參數-值對
String pars[] = com.split("-");
StringBuilder sb = new StringBuilder();
sb.append("[-");
String words[]=null;
//循環抽取其中的命令和值
for(int i=0;i
{
String tmp = pars.trim();
//判斷這個值是否是非空格
if(tmp!=null&&tmp.length()>0)
{
int j = tmp.indexOf(' ');
int k = j;
sb.append(tmp.substring(0,j));
sb.append(' ');
//找到下一個空格的地方
while(k
{
k++;
}
sb.append(tmp.substring(k));
if(i!=pars.length-1)
{
sb.append(',');
}else
{
sb.append(']');
}
}
}
return sb.toString();
}
}
3,dif(String str1,String str2);
輸出兩個字符串中不同的的'字符,如果字符a在str1中出現,而沒有在str2當中出現,則輸出-a.相反,則輸出+a;
字符串當中重復的子字符串不輸出。
abcde,bcde 輸出-a
dabc, aabcef 輸出+a,-d,+e,+f
如 abcdefe,aabcadef輸出+a,+a,-e;
public class StringDifferent {
public static void main(String[] args) {
StringDifferent sd = new StringDifferent();
String res = null;
res = sd.strDif("abcde", "bcde");
System.out.println(res);
res = sd.strDif("dabc", "aabcef");
System.out.println(res);
res = sd.strDif("abcdefg", "abcdefg");
System.out.println(res);
res = sd.strDif("abfg", "abcdefg");
System.out.println(res);
res = sd.strDif("afsdlf", "sdlfajsdlfjsd");
System.out.println(res);
}
//這道題目相當于最長公共子序列的改進版,字符串進行二維存儲了之后,就沿著相應的規則下來
//這樣做不知道對不對,只能這樣寫了
String strDif(String str1, String str2) {
StringBuilder sb = new StringBuilder();
String tmp = null;
// if(str1.length()>str2.length())
// {
// tmp = str1;
// str1 = str2;
// str2 = tmp;
// }
int dp[][] = new int[str1.length()+1][str2.length()+1];
int len1 = str1.length();
int len2 = str2.length();
//進行dp的方法
for(int i=1;i<=len1;i++)
{
for(int j=1;j<=len2;j++)
{
if(str1.charAt(i-1)==str2.charAt(j-1))
{
dp[j] = dp[i-1][j-1]+1;
}
}
}
// for(int i=0;i<=len1;i++)
// {
// for(int j=0;j<=len2;j++)
// {
// System.out.print(dp[j]+",");
// }
// System.out.println();
// }
int i = len1,j = len2;
//如何獲取其中的字符串
while(i>=0 && j>=0)
{
if(dp[j]==0)
{
if(i
{
tmp = "+"+str2.charAt(j-1);
sb.insert(0, tmp);
j--;
}else
{
//判斷到頭的情況
if(i==j && j==0)
{
break;
}
tmp = "-"+str1.charAt(i-1);
sb.insert(0, tmp);
i--;
}
}else{
i--;
j--;
}
}
return sb.toString();
}
}
【2015去哪兒校招杭州站軟件研發筆試題】相關文章:
2015阿里校招研發工程師筆試題08-13
網易2015校招筆試題09-09
2015阿里校招運營專員筆試題08-21
去哪兒2015校園招聘產品經理筆試題11-24
京東2015應屆生校招筆試題09-14
騰訊校招筆試題01-16
2015百度校招產品經理筆試題目08-19
2015年百度校招產品經理筆試題07-26
騰訊校招筆試題目12-20