js实现华为机试01

1字符串最后一个单词的长度
2计算某字符在字符串出现的次数
3明明的随机数
4字符串分隔
5进制转换
6质数因子
7取近似值
8合并表记录
9字符个数统计
10提取不重复的整数

字符串最后一个单词的长度

var str=readline();
var strArr=str.split(' ');
var endLen=strArr[strArr.length-1].length;
console.log(endLen);

计算某字符在字符串出现的次数

var str=readline();
var sl=readline();

var targetstr = str.toLowerCase();
var ss = sl.toLowerCase();

var count = 0;
var i = 0;
while (targetstr.indexOf(ss, i) != -1) {
    count++;
    i = targetstr.indexOf(ss, i) + 1;
}
console.log(count);

明明的随机数

var N=readline();
var number=[];
var numlength=0;
var count=0;
while(N){
    if(!numlength){
        numlength=N;
    }
    else{
        count++;
         number.push(N);
        if(count==numlength){
           var a=uniqAndsort(number);
           a.forEach(function(value){
               console.log(value);
           }); 
           number=[];
           numlength=0; 
           count=0;
        }
    }
   N=readline() 
}
    
function uniqAndsort(array) {
	  var temp = []; //一个新的临时数组
	  //1为数组去重
	  array.forEach(function(value, index) {
	      if (temp.indexOf(value) == -1) {
	          temp.push(value);
	      }
	  });
	  //2为数组排序
	  temp.sort(function(a, b) {
	         return a - b;
	     });
	
	  return temp;
}

字符串分隔

var arr = [];

var str=readline();
while(str){
    arr.push(str);
    str=readline();
}


for(let j = 0; j < arr.length;j++) {
    if(arr[j].length <= 8) {
        var res = arr[j] + '00000000';
        console.log(res.slice(0,8)); 
    } else {  //超过的可能会生成多行
        for(let m = 0; m < arr[j].length; m+=8){
            let resSlice = arr[j].slice(m,m+8);
            if (resSlice.length < 8) {
                let res = resSlice+'00000000';
                console.log(res.slice(0,8)); //多余的零不会输出
            } else {
                console.log(resSlice);
            }
        }
       
    }
}

进制转换

var arr=[];

var str=readline();
while(str){
    arr.push(str);
    str=readline();
}

var num = 0;
var result = 0;
 for (var i = 0; i < arr.length; i++) {
     var temp = arr[i].slice(2);
     // console.log(temp);
     for (var k = temp.length - 1, j = 0; k >= 0, j < temp.length; k--, j++) {

         if (isNaN(temp.charAt(k))) {

             switch (temp.charAt(k)) {
                 case 'A':
                     num = 10;
                     break;
                 case 'B':
                     num = 11;
                     break;
                 case 'C':
                     num = 12;
                     break;
                 case 'D':
                     num = 13;
                     break;
                 case 'E':
                     num = 14;
                     break;
                 case 'F':
                     num = 15;
                     break;

             }


         } else {
             num = parseInt(temp.charAt(k));
         }
         result += num * (Math.pow(16, j));

     }
     console.log(result);
     result = 0;

 }

质数因子

待写

取近似值

var num=readline();
console.log(Math.round(num));

合并表记录

//读取第一行的个数
var num=parseInt(readline());
var obj={};
if(num>0){
     //循环num次
    for(let i=0;i<num;i++){
        //读取键值
        let str=readline();
        //以空格分割为数组:arr[0],arr[1]
        let arr=str.split(' ');
        let value=parseInt(arr[1]);
        if(!obj[arr[0]]){//对象中不存在属性arr[0]
            obj[arr[0]]=value;
        }else{//对象中存在属性arr[0]
            obj[arr[0]]=parseInt(obj[arr[0]])+value;
        }
        
    }
}
//循环输出obj
for(var key in obj){
   console.log(key+' '+obj[key]); 
}

字符个数统计

var str=readline();
var count=0;
//借助数组
var arr=[];
//遍历字符串,如果字符不在数组中,则将字符加入数组
for(let i=0;i<str.length;i++){
    if(!arr.includes(str[i])){
    //arr.indexOf(str[i])==-1
        arr.push(str[i]);
    }
}
console.log(arr.length);

提取不重复的整数

var s=readline();

var arr = [];
var str = '';
//倒序遍历字符串,如果字符不在数组中,则将字符加入数组
for (let j = s.length - 1; j >= 0; j--) {
    if (!arr.includes(s.charAt(j))) {
        arr.push(s.charAt(j));
    }
}
//遍历数组,将数组元素放入新串中
arr.forEach(function(value) {
    str += value;
});
console.log(str);
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值