华为机试题练习(一)

1.写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

var str  = readline().toLowerCase();
var item  = readline().toLowerCase();
var count = 0;
for(var i = 0; i < str.length; i++){
    if(str[i] == item){
        count += 1;
    }
}
print(count);

2.计算字符串最后一个单词的长度,单词以空格隔开。

while(line = readline()) {
    var arr = line.split(' ');
    console.log(arr[arr.length - 1].length);
}

3.输入N个1到1000之间的随机整数(N≤1000),去重,升序排序。

while(line = readline()) {
    var arr = [];
    for(var i = 0; i < line; i++){
        arr.push(readline());
    }
    var arr1 = [...new Set(arr)];
    arr1.sort(function(a,b) {
        return a-b;
    })
    for(var i = 0; i < arr1.length; i++){
        console.log(arr1[i]);;
    }
}

4.写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

while(line = readline()){
    console.log(parseInt(line, 16));
}
  1. 输入一个long型整数,按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
    输入
    180
    输出
    2 2 3 3 5
     let num = parseInt(readline());
        let arr = [];
        for(let i = 2; i <= num;){
            if(num % i === 0){
                arr.push(i);
                num = num / i;
            }else {
                i++
            }
        }
        print(arr.join(' ')+' ');
  1. 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
var line = readline();
var res = Math.round(line);
print(res);

7.数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入
4
0 1
0 2
1 2
3 4

输出
0 3
1 2
3 4

var sum;
while(sum = readline()) {
    var obj = {};
    for(var i =0; i < sum; i++) {
        var arr = readline().split(' ')
        if(obj[arr[0]]) {
            obj[arr[0]] += parseInt(arr[1]);
        }else {
            obj[arr[0]] = parseInt(arr[1]);
        }
    }
    for(var i in obj) {
        console.log(i + ' ' + obj[i]);
    }
}
  1. 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
    输入
    9876673
    输出
    37689
var line = readline();
var arr = line.split("");
var res = [...new Set(arr.reverse())].join("");
console.log(res);

…new Set(arr) 可以对arr数组去重。

  1. 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
let str = readline();
let res = {};
for(let i = 0; i < str.length; i++){
    let temp = str.charCodeAt(i);
    if(temp <= 127 && temp >= 0){
        res[str[i]] = 1;
    }
}
console.log(Object.keys(res).length);

charCodeAt(index) 会将指定位置的字符转码。
Object.keys(obj) 要返回其枚举自身属性的对象。

10.输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

var str = readline().trim().split("").reverse().join("");
console.log(str);

11.将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。

var str = readline();
var res = [].concat(str.split(" ")).reverse().join(" ");
console.log(res);

12.输入一个整数(int类型),这个数转换成2进制后,输出1的个数。

var n = parseInt(readline());
var num = n.toString(2);
var count = 0;
for(var i=0;i

你可能感兴趣的:(学习笔记)