关于前端:华为机试在线训练前端

30次阅读

共计 4126 个字符,预计需要花费 11 分钟才能阅读完成。

明明的随机数

题目形容

明明想在学校中请一些同学一起做一项问卷调查,为了试验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数(N≤1000),对于其中反复的数字,只保留一个,把其余雷同的数去掉,不同的数对应着不同的学生的学号。而后再把这些数从小到大排序,依照排好的程序去找同学做考察。请你帮助明明实现“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,心愿大家能正确处理)。

Input Param
n               输出随机数的个数
inputArray      n 个随机整数组成的数组

Return Value
OutputArray    输入解决后的随机整数

注:测试用例保障输出参数的正确性,答题者无需验证。测试用例不止一组。
样例输出解释:
样例有两组测试
第一组是 3 个数字,别离是:2,2,1。
第二组是 11 个数字,别离是:10,20,40,32,67,40,20,89,300,400,15。

输出形容:

输出多行,先输出随机整数的个数,再输出相应个数的整数

输入形容:

返回多行,解决后的后果

示例 1
输出

3
2
2
1
11
10
20
40
32
67
40
20
89
300
400
15

输入

1
2
10
15
20
32
40
67
89
300
400

通过代码

while(n=parseInt(readline())) {var arr = [];
    while(n--) {var value = parseInt(readline());
        arr[value] = 1;
    }
    arr.forEach(function(el, index) {if (el === 1) {console.log(index);
        }
    });
}

字符串宰割

题目形容

  • 间断输出字符串,请按长度为 8 拆分每个字符串后输入到新的字符串数组;
  • 长度不是 8 整数倍的字符串请在前面补数字 0,空字符串不解决。

输出形容:

间断输出字符串(输出 2 次, 每个字符串长度小于 100)

输入形容:

输入到长度为 8 的新字符串数组

示例 1
输出

abc
123456789

输入

abc00000
12345678
90000000

通过代码

while(str=readline()) {while(str.length > 8) {console.log(str.substr(0, 8));
        str = str.substr(8);
    }
    if (str.length < 9) {console.log((str + '00000000').substr(0, 8));
    }
}

进制转换

题目形容

写出一个程序,承受一个十六进制的数,输入该数值的十进制示意。(多组同时输出)

输出形容:

输出一个十六进制的数值字符串。

输入形容:

输入该数值的十进制字符串。

示例 1

输出

0xA

输入

10

通过代码

while(str = readline()) {console.log(parseInt(str, 16));
}

如果十进制转十六进制,应用 str.toString(16)

质数因子

题目形容

性能: 输出一个正整数,依照从小到大的程序输入它的所有质因子(如 180 的质因子为 2 2 3 3 5)
最初一个数前面也要有空格

详细描述:

函数接口阐明:
public String getResult(long ulDataInput)
输出参数:
long ulDataInput:输出的正整数
返回值:
String

输出形容:

输出一个 long 型整数

输入形容:

依照从小到大的程序输入它的所有质数的因子,以空格隔开。最初一个数前面也要有空格。

示例 1

输出

180

输入

2 2 3 3 5

通过代码

var num = parseInt(readline());
var res = '';
for (var i=2; i<Math.sqrt(num); i++) {while (num%i == 0) {
        num = num / i;
        res +=  i + ' ';
    }
}

if (num > 1) {res += num + ' ';}
console.log(res)

取近似值(四舍五入)

题目形容

写出一个程序,承受一个正浮点数值,输入该数值的近似整数值。如果小数点后数值大于等于 5, 向上取整;小于 5,则向下取整。

输出形容:

输出一个正浮点数值

输入形容:

输入该数值的近似整数值

示例 1

输出

5.5

输入

6

通过代码

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

合并表记录

题目形容

数据表记录蕴含表索引和数值(int 范畴的整数),请对表索引雷同的记录进行合并,行将雷同索引的数值进行求和运算,输入依照 key 值升序进行输入。

输出形容:

先输出键值对的个数
而后输出成对的 index 和 value 值,以空格隔开

输入形容:

输入合并后的键值对(多行)

示例 1

输出

4
0 1
0 2
1 2
3 4

输入

0 3
1 2
3 4

通过代码

while(n=readline()) {var obj = {};
    for (var i=0; i<n; i++) {var lineArr = readline().split(' ');
        if (obj[lineArr[0]]) {obj[lineArr[0]] += parseInt(lineArr[1]);
        } else {obj[lineArr[0]] = parseInt(lineArr[1]);
        }
    }
    
    for (index in obj) {console.log(index + ' ' + obj[index]);
    }
}

字符个数统计

题目形容

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ACSII 码范畴内(0~127),换行示意结束符,不算在字符里。不在范畴内的不作统计。

输出形容:

输出 N 个字符,字符在 ACSII 码范畴内。

输入形容:

输入范畴在 (0~127) 字符的个数。

示例 1

输出

abcc

输入

3

通过代码

while (line = readline()) {
    var res = '';
    var arr = line.split('');
    for (var i=0; i<arr.length; i++) {if (res.indexOf(arr[i]) == -1) {res += arr[i];
        }
    }
    console.log(res.length);
}

字符串反转

题目形容

写出一个程序,承受一个字符串,而后输入该字符串反转后的字符串。(字符串长度不超过 1000)

输出形容:

输出 N 个字符

输入形容:

输入该字符串反转后的字符串

示例 1

输出

abcd

输入

dcba

通过代码

var str = readline();
var reversedArr = str.split('').reverse();
console.log(reversedArr.join(''));

句子逆序

题目形容

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

输出形容:

将一个英文语句以单词为单位逆序排放。

输入形容:

失去逆序的句子

示例 1

输出

I am a boy

输入

boy a am I

通过代码

var str = readline();
var reversedArr = str.split(' ').reverse();
console.log(reversedArr.join(' '));

字串的连贯最长门路查找(依照字典序排列字符串)

题目形容

给定 n 个字符串,请对 n 个字符串依照字典序排列。

输出形容:

输出第一行为一个正整数 n(1≤n≤1000), 上面 n 行为 n 个字符串(字符串长度≤100), 字符串中只含有大小写字母。

输入形容:

数据输入 n 行,输入后果为依照字典序排列的字符串。

示例 1

输出

9
cap
to
cat
card
two
too
up
boat
boot

输入

boat
boot
cap
card
cat
to
too
two
up

通过代码

while (n = readline()) {var arr = [];
    for(var i=0; i<n; i++) {arr.push(readline());
    }
    var sortArr = arr.sort();
    for(var j=0; j<sortArr.length; j++) {console.log(sortArr[j]);
    }
}

求解立方根

题目形容

•计算一个数字的立方根,不应用库函数
详细描述:
•接口阐明
原型:
public static double getCubeRoot(double input)
输出:double 待求解参数
返回值:double  输出参数的立方根,保留一位小数

输出形容:

待求解参数 double 类型

输入形容:

输出参数的立方根 也是 double 类型

示例 1

输出

216

输入

6.0

通过代码

var num = parseInt(readline());
var res = Math.pow(num, 1/3);
console.log((Math.round(res*10)/10).toFixed(1));

【中级】单词倒排

题目形容

对字符串中的所有单词进行倒排。
阐明:
1、每个单词是以 26 个大写或小写英文字母形成;
2、非形成单词的字符均视为单词距离符;
3、要求倒排后的单词距离符以一个空格示意;如果原字符串中相邻单词间有多个距离符时,倒排转换后也只容许呈现一个空格距离符;
4、每个单词最长 20 个字母;

输出形容:

输出一行以空格来分隔的句子

输入形容:

输入句子的逆序

示例 1

输出

I am a student

输入

student a am I

通过代码

var line = readline();
var words = line.match(/[A-Za-z]+/g);
var reservedArr = words.reverse();
console.log(reservedArr.join(' '));

统计大写字母个数

题目形容

找出给定字符串中大写字符 (即 ’A’-‘Z’) 的个数
接口阐明
原型:int CalcCapital(String str);
返回值:int

输出形容:

输出一个 String 数据

输入形容:

输入 string 中大写字母的个数

示例 1

输出

add123#$%#%#O

输入

1

通过代码

while (line = readline()) {var res = line.match(/[A-Z]/g);
    console.log(res.length);
}

AAAAAA

题目形容

AAAAAAA

输出形容:

AAAAAA

输入形容:

AAAAAA

示例 1

输出

AAAAAA

输入

AAAAAA

通过代码

AAAAAA

正文完
 0