去哪儿网2013笔试题

大概就是设计一个函数,要求返回不小于最小长度的字符串,字符串长度不够的,用传进的字符补全字符串。

padStart(string,minLength,padChar)

string:需要出现在返回结果的末尾

minLength:必须值,可以为零或负,此时返回完整的字符串

padChar:用于插入字符串前以补全字符串达到最小的字符串长度

return:返回拼接后的字符串

例如padStart("7",3,"0") returns"007"

padStart("2010",3,"0")retruns "2010"

 <script>

function padStart(string,minLength,padChar){

  varresult = string;

 if(string.length >= minLength){

           return result;

  }

 else{

           do{

                     result = padChar + result;

           }

   while(result.length<minLength);

  }

 return result;

}

alert(padStart("7","3","0"));

alert(padStart("2010","3","0"));

 </script>

2.编写一个简单的命令行参数解析函数,命令行的参数名用“-”加英文或数字组 成,例如“-name”,后面跟着的部分是具体的值,命令行参数之间,参数与值之间用一个或多个连续的空格分隔。双引号中的内容作为一个整体看待,不进行解析。返回结果是被分隔开的额一个个参数和值。假定命令行的内容只会包含英文、数字、空格、双引号和减号。

例如,参数为:

-name Lily -age 21  -school""University of Oxford"

返回结果为:

[-name Lily,-age 21,-school"University of Oxford"

 <script>

 function getParam(str){

           var result = new Array();

           result = str.split("-");

           result.shift();

           for(var i = 0; i<result.length; i++){

             result[i] = "-" + result[i];

           }

           return result;

  }

 

 alert(getParam("-dsfsd 3443 -glkajf fsf -ere sfd"));

 </script>

3.编写一个diff函数,用来比较两个字符串的差异,如果字符在第一个字符串 中存在,在第二个字符串中不存在则输出减号和相应的字符串;如果字符在第二个字符串中存在,在第一个字符串中不存在则输出加号和相应的字符串;如果存在相同的子字符串,则子字符串中的内容都不需要输出,字符的比较结果用逗号分隔,每个差异的字符串都要找出来。要求充分利用相同的子字符串,尽可能优化算法保 证输出的结果最短。作为参数的字符串中只会包含英文字母。

 假设函数原型为:

String diff(String a,String b)

如:

a="abc",b="aabcbc",则输出为"+a,+b,+c";

a="abcde",b="bcdef",则输出为“-a,+f”

<script>

 function diff(strA , strB){

           //用数组存储字符串

           var arrA = strA.split(""),

               arrB = strB.split(""),

                     result = "",

                     temp = 0;

          //排序,以便比较

           arrA = arrA.sort();

           arrB = arrB.sort();

           //将A,B数组进行比较,当A或B到最后的时候终止

           for(var i = 0 ,j = 0; ( i < arrA.length )&& (j < arrB.length) ; ){

                     //若arrA[i] > arrB[j]则表示arrA[i]字符比arrB[j]大,那么arrB[j]不在arrA中,其他的同理

                     if(arrA[i] > arrB[j]){

                              result = result + "+" + arrB[j];

                              j++;

                              temp = i;

                     }

                     else if (arrA[i] == arrB[j])

                     {

                              i++;

                              j++;

                     }

                     else if (arrA[i] < arrB[j])

                     {

                              result = result + "-" + arrA[i];

                              i++;

                              temp = j;

                     }

           }

           //字符串比较截止后,B组长度较长,处理后面的字符

           if(arrA[arrA.length - 1] <arrB[arrB.length - 1]){

                     for(var i = temp; i < arrB.length; i++){

                       result = result + "+" + arrB[i];

                            }

           }

           //字符串比较截止后,A组长度较长,处理后面的字符

           else if(arrA[arrA.length - 1] >arrB[arrB.length - 1]){

                     var index = strA.indexOf(arrB[arrB.length - 1]);

                     for(var i = temp; i < arrA.length; i++){

                       result = result + "-" + arrA[i];

                            }

           }

 

           return result;

  }

 alert(diff("abc" , "ae"));

 </script>

解法二:

function ifexist (a , b) {

                   vara,b,tempa;

                   this.a=tempa =a;

                   this.b=b;

                   varstr1=''

                   //把b中的元素从a中逐个剔除

                   for(vari= 0; i<b.length; i++){

                            a= a.replace(b.charAt(i), '');

                   }

          //遍历a中剩下的元素

                   for(vari= 0; i<a.length; i++){

                            str1='-'+a.charAt(i)+str1;

                   }

                   //把a中的元素从b中 逐个剔除(得临时保存一下 原始的a)

                   for(vari= 0; i<tempa.length; i++){

                            b= b.replace(tempa.charAt(i), '');

                   }

          //遍历b中剩下的元素

                   for(vari= 0; i<b.length; i++){

                            str1=str1 + '+'+ b.charAt(i);

                   }

 

                   alert(str1);

         }

ifexist("jfaldfsdsf","slkhahasfs");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值