1. 合并表记录

描述
数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出

输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开

输出描述:
输出合并后的键值对(多行)

题目分析:
第一行为键值对个数,第二行以后的为成对的index和value
牛客系统上的输入是ACM模式,需要用readline()来获取

//获取到了键值对的个数
let num=readline();
const obj={};
for(let i=0;i<num;i++){//获取到了每一次的输入键值对const line=readline().split(" ");//如果obj[index]还不存在,就执行else的内容,把value写进去//如果已经存在了,就执行第一行语句,把value进行累加//     第一次传入  index:line[0] 0  value:line[1] 1// obj[0]=undefined 执行第二条语句// obj[0]=line[1];//第二次再传入index为0的值时,obj[0]=1已存在,执行第一条语句//obj[0]=1(上一次传入的)+line[1](这一次传入的)//第三次传入 index:line[0] 1  value:line[1] 2
//     obj[1]=undefined,执行第二条语句,把value存入对应的index中 类推if(obj[parseInt(line[0])]){obj[parseInt(line[0])] += parseInt(line[1])}else{obj[parseInt(line[0])] = parseInt(line[1])}
}
// 遍历输出//在遍历对象的时候,key为整数类型或者可以转换为整数类型的字符串(例如:0),会将这些key从小到大优先进行遍历,然后其他的key会按照创建的实际顺序进行遍历。
// 所以直接就按照key升序进行输出了。for(let index in obj){console.log(index+" "+obj[index])}

2.提取不重复的整数
描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字新的整数
保证输入的整数最后一位不是0
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

解题思路:在看到这道题的时候,我抓到关键词:
从右向左----萌生出要把这个数字变成数组,翻转过来的想法reverse-----大佬直接从最后一位向前遍历,不需要这么麻烦。
最后一位不是0,我想的是用replace方法,把末尾为0的数全部替换掉
去重–我用的是set集合。set集合接收一个数组(或者其他有iterable接口的其他数据结构)作为参数,会自动自重,用到了…扩展运算符,将一个数组变成逗号分隔的参数序列
做完上面工作之后再把参数序列用join方法连接起来,再转换为Number
用到了很多方法,有点麻烦,而且要清楚这些方法究竟是数组的方法还是字符串方法。

let arr=(readline().replace(/0+$/,"").split("").reverse())
//replace:字符串方法,把字符串中以0结尾的数全部替换掉
// split:字符串方法,将一个字符串拆分成一个数组
// reverse:数组方法,翻转数组
// 去重 set集合
// ...扩展运算符,将一个数组变成逗号分隔的参数序列
//
// function quchong(arr){
//     var result=[...new Set(arr)];
//     return result;
// }
let qc=arr=>[...new Set(arr)]
var result1=qc(arr)
// 把数组变成整数
console.log(Number(result1.join("")));

去看了一个高赞回答:
还是先获取输入,把输入转换为字符串。
用字符串的indexOf方法, 如果字符串里面没有这个数据的话就写入,有的话就跳过。但为什么可以忽略末尾的0啊。。。

//获取输入,把输入的数字转换成字符串
var num = Number(readline()).toString();
// 从字符串的最后一位开始,一直遍历到index为0时的值
// 当str里面没有这个数字的时候,即str.indexOf(num)=-1 就把它添加到str里面去
let str = '';
for(let i = num.length-1; i >=0; i--){if(str.indexOf(num[i]) == '-1'){str += num[i]}
}
console.log(Number(str))

因为觉得没有去除最后的0有点bug,所以把我俩的方法综合了一下,做了点改动:
先把最后面的0去掉,再从后向前遍历,如果没有就写入str,最后把str转换为Number输出。

let arr=readline().replace(/0+$/,"");
let str='';
for(let i=arr.length-1;i>=0;i--){if(str.indexOf(arr[i])=="-1"){str+=arr[i];}
}
console.log(Number(str))
  1. 字符个数统计

描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCII码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。
输入描述:
输入一行没有空格的字符串。

输出描述:
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

我的做题思路是: 先遍历数组,把第一次出现的字符写入,并让num自加,第二次出现就不管了。然后输出num

let str=readline();
var str1="";
var num=0;
for(i=0;i<str.length;i++){if(str1.indexOf(str[i])=="-1"){str1+=str[i];num++;}
}
console.log(num);
  1. 数字颠倒
    描述
    输入一个整数,将这个整数以字符串的形式逆序输出
    程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

输入描述:
输入一个int整数

输出描述:
将这个整数以字符串的形式逆序输出

let num=readline().split("").reverse().join("");
console.log(num)

5.字符串反转
描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

输入描述:
输入一行,为一个只包含小写字母的字符串。

输出描述:
输出该字符串反转后的字符串。

let str=readline();
let reg=/^([a-z]+)$/g;
if(reg.test(str)){var result=str.split("").reverse().join("");console.log(result);
}else{console.log("error,请检查输入")
}

6.句子逆序

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

输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。

输出描述:
得到逆序的句子

// 思路:先用空格把输入搞到手,然后再逆序输出
let arr=readline().split(" ").reverse().join(" ");
console.log(arr)

【刷题】JavaScript V8华为机试相关推荐

  1. JavsScript牛客网华为机试(11-20)题解

    牛客网华为机试题解JavaScript版本 华为机试第11-20题解答(js) 11.数字颠倒 12.字符串反转 13.句子逆序 14.字符串排序 15.求int型数据在内存中存储时1的个数 16.购 ...

  2. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...

  3. 《华为机试》刷题之HJ84 统计大写字母个数

    <华为机试>刷题之统计大写字母个数 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 找出给定字符串中大写字符(即'A'-' ...

  4. 华为机试真题 javascript和java 报文解压缩 100%通过

    前言 <华为机试真题>专栏为华为OD机试真题,源码包含多种语言. 如果找不到想要的考题 ,或者需要最新考题的答案,请进行留言机试题目,[注:留言考题请注明机试的时间] java版.java ...

  5. 【华为机试真题Java】从入门到入职-真题列表导读

    写在前面 本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题.大家有什么不懂的都可以留言. 华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100 ...

  6. [华为机试真题]69.姓名的夫妻相

    题目 在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是"夫妻相".所谓"夫妻相",就是两个人看上去比较般配,长相.身材等某些方面有一定的相似度. 本题则另辟蹊 ...

  7. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

  8. 华为机试python编程题_牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  9. 【华为机试真题 Python实现】2022年4季度最新机试题

    文章目录 2022年4季度最新机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值计 ...

最新文章

  1. springboot jpa 自定义返回对象
  2. Laravel 5.2--如何让表单提交错误,不清空?
  3. CentOS7.2 开启内网转发
  4. #20155235 《网络攻防》 实验二 后门原理与实践
  5. System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本?
  6. bootstrap-媒体对象-对齐
  7. 数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构
  8. v-on指令修饰符大全
  9. 三、Python-列表
  10. Linux设备驱动程序学习(4) -高级字符驱动程序操作[(1)ioctl and llseek]
  11. cdn需要备案吗_车子贴改色膜需要到车管所备案吗?
  12. python 类继承和组合_python类与对象的组合与继承
  13. 计算机科学中抽象的作用,抽象释义
  14. Hadoop中Writable类
  15. Kalman Filter—Extended Kalman Filter(EKF)
  16. 气是能量的宏观运行的现象描述
  17. Spring Could+Ant Design Pro表格数据加载
  18. 用 WP7开发包 安装 WP7程序(XAP文件)
  19. 基于VHDL的vivado2017.4使用教程
  20. 科技文献检索(六)——检索语言

热门文章

  1. expires缓存技术
  2. “libgomp.so.1: version `GOMP_4.0' not found” || “libstdc++.so.6: version `CXXABI_1.3.8' not found”错误
  3. [cartographer] 10. ShrinkToFit
  4. 微信小程序设置input框placeholder的字体大小
  5. avro hello world
  6. ElasticSearch 常用api
  7. 【面经】携程暑期实习一面
  8. pfSense常用插件简介
  9. 检测IE版本,提示升级浏览器
  10. 作业:用递归方法求Fibonacci级数,公式fib(n)=fib(n-1)+fib(n-2),(n>2),fib(1)=fib(2)=1