字符串统计(全量字符集与已占用字符集)
var str = "a:3,b:5,c:2@a:1,b:2"
function getAlreadyUsed (str) {
var firstStr = str.slice(0, str.indexOf('@'));
var firstArr = firstStr.split(',')
var lastStr = str.slice(str.indexOf('@')+1);
var lastArr = lastStr.split(',');
var map1 = new Map()
var map2 = new Map()
for(let key of firstArr) {
map1.set(key[0], key[2])
}
for(let key of lastArr) {
map2.set(key[0], key[2])
}
for(let key of map2.keys()) {
if(map1.has(key)) {
var tmpVal = (+map1.get(key)) - (+map2.get(key))
if(tmpVal) {
map1.set(key, tmpVal)
} else {
map1.delete(key)
}
}
}
var newStr = ""
for(let [key, value] of map1) {
newStr+= `${key}:${value},`
}
console.log(newStr.substring(0, newStr.length-1))
}
getAlreadyUsed(str)
寻找身高相近的小朋友
function compareHigh(arr,len,tall) {
let map = new Map()
for(let i = 0 ; i < len ; i++){
const frequent = Math.abs(tall - arr[i])
map.set(arr[i],frequent)
}
const list = [...map.keys()]
list.sort(function(a,b) {
if(map.get(a) == map.get(b)) {
return a-b
}
else {
return map.get(a) - map.get(b)
}
})
return list
}
console.log(compareHigh([95,96,97,102,101,99,98,103,104,105],10,100))
火星文计算
let str = '7#6$5#12'
let test1 = /[0-9]+\$[0-9]+/
let test2 = /[0-9]+#[0-9]+/
while (str.indexOf('$')>-1){
test('$')
}
while (str.indexOf('#')>-1){
test('#')
}
console.log(str);
function test(type){
let test = ''
if(type==='$'){
test = test1
}else if (type==='#'){
test = test2
}
str = str.replace(test,e=>{
let x= Number(e.split(type)[0])
let y= Number(e.split(type)[1])
if(type==='$'){
return 3*x+y+2
}else if(type==='#'){
return 2*x+3*y+4
}else {
return e
}
})
}
最长的指定瑕疵度的元音子串
const getLongestFlawedVowelSubstrLen = (flaw, input) => {
input = input.toLowerCase()
let au = {
a: 1,
e: 1,
i: 1,
o: 1,
u: 1
}
let left = 0
let right = 0
let arr = []
let count = 0
for (right = 0; right < input.length; right++) {
let isRightYuan = au[input[right]] === 1 ? true : false
if (isRightYuan === false) {
count++
}
if (isRightYuan === false || count < flaw) {
continue
}
if (count === flaw && au[input[left]] === 1) {
let temp = input.substring(left, right + 1)
arr.push(temp)
continue
}
while (count > flaw || au[input[left]] !== 1) {
left++
if (au[input[left - 1]] !== 1) {
count--
}
if (left > right) {
left = right
break
}
}
if (count == flaw && au[input[left]] === 1) {
let temp = input.substring(left, right + 1)
arr.push(temp)
}
}
if (arr.length > 1) {
arr.sort((a, b) => b.length - a.length)
if (arr.length > 0) {
return arr[0].length
}
} else if (arr.length === 1) {
return arr[0].length
} else {
return 0
}
}
console.log(getLongestFlawedVowelSubstrLen(0, 'asdbuiodevauufgh'))
消消乐游戏
function delStr(s) {
let list = [];
let isFuhe = true;
var reg = /^[A-Za-z]+$/;
for (let i = 0; i < s.length; i++) {
let temp = s.charAt(i);
if (!reg.test(temp)) {
isFuhe = false;
break;
}
list.push(temp);
}
let n = s.length;
while (n > 0 && isFuhe) {
n = list.length - 1;
for (let i = 1; i < list.length; i++) {
n--;
if (list[i] == list[i - 1]) {
list.splice(i, 1);
list.splice(i - 1, 1);
break;
}
}
}
return isFuhe ? list.length : 0
}
【华为OD机试真题 JS】判断字符串子序列
function judge(target, source) {
let n1 = target.length;
let n2 = source.length;
let n = 0;
let res = n2;
for (let i = n1 - 1; i >= 0; i--) {
for (let j = res - 1; j >= 0; j--) {
if (target.charAt(i) == source.charAt(j)) {
n++;
res = j;
break;
}
}
}
if (n == n1) {
return res
} else {
return -1
}
}
整数对最小和
function sum(nums1, nums2, k) {
let arr1 = nums1.sort((a, b) => a - b);
let arr2 = nums2.sort((a, b) => a - b);
let n1 = arr1.length;
let n2 = arr2.length;
let n = n1 + n2;
let res = [];
for (let i = 0; i < n1; i++) {
for (let j = 0; j < n2; j++) {
res.push(arr1[i] + arr2[j]);
}
}
console.log(res,'asdasdas')
res.sort((a, b) => a - b);
let sum = 0;
for (let i = 0; i < k; i++) {
sum += res[i];
}
console.log(sum);
return sum
}
console.log(sum([3, 1, 1, 4], [3, 1, 2, 3], 2))
【按区间反转文章片段】
function test(s,start,end){
let arr = s.split(' ')
let qieArr = arr.splice(start,end-start+1)
qieArr.reverse()
arr.splice(start,0,...qieArr)
let str = arr.join(' ')
console.log(str);
}
最长连续方波信号
let res = "";
let temp = "";
let b = false;
let isFomat = true;
if(s.charAt(0)=='0'){
temp ="0";
b = true;
}
for(let i=1;i<s.length;i++){
if(b){
if(s.charAt(i)==s.charAt(i-1)){
if(s.charAt(i)=='0'){
if(temp.length>=3 && isFomat){
res = temp.length>res.length ? temp : res;
}
temp = "0";
isFomat = true;
}else {
temp += s.charAt(i);
isFomat = false;
}
}else {
temp += s.charAt(i);
}
} else {
if(s.charAt(i)=='0'){
temp = "0";
b = true;
}
}
}
console.log(res);
数组拼接
let step = Number("3");
let m = Number("2");
let test = ["2,5,6,7,9,5,7","1,7,4,3,4"];
let lists = [];
for(let i=0; i<m; i++){
let strings = test[i].split(",").map(Number);
lists.push(strings);
}
let res = "";
let n = 0;
let count = 0;
while (count<m){
for(let i=0; i<m; i++){
let list = lists[i];
if(n>list.length){
continue;
}
let end = n + step;
if(end >= list.length){
end = list.length;
count++;
}
for(let j=n; j<end; j++){
res += list[j] + ",";
}
}
n+=step;
}
console.log(res.substring(0,res.length-1));
停车场车辆统计
let cars = readLine().split(",");
let count = 0;
let res = 0;
for(let i=0;i<cars.length;i++){
if(cars[i]=="1"){
count++;
}else{
if(count!=0){
res++;
count = 0;
}
continue;
}
if(count==3 || i==cars.length-1){
res++;
count = 0;
}
}
console.log(res);
乱序整数序列两数之和绝对值最小
let strings = readLine().split(" ").map(i=>parseInt(i));
let n = nums.length;
let min = Number.MAX_VALUE;
let num1 = 0;
let num2 = 0;
for(let i=0;i<n-1;i++){
for(let j=i+1;j<n;j++){
let a = nums[i];
let b = nums[j];
let count = Math.abs(a+b);
min = Math.min(count, min);
if(min==count){
num1 = a;
num2 = b;
}
}
}
console.log(num1+" "+num2+" "+min);
最大括号深度
input = "((([]){(()(})}))"
let stack = []
let flag = true
let max = 0
for (const x of input) {
if ((x === '(') || (x === '[') || (x === '{')) {
stack.push(x)
max = Math.max(max, stack.length)
continue
}
if ((x === ')')) {
if (stack.pop() === '(') {
continue
} else {
console.log(0);
flag = false
break
}
}
if ((x === ']')) {
if (stack.pop() === '[') {
continue
} else {
console.log(0);
flag = false
break
}
}
if ((x === '}')) {
if (stack.pop() === '{') {
continue
} else {
console.log(0);
flag = false
break
}
}
}
if (flag) {
if (stack.length === 0) {
console.log(max);
} else {
console.log(0);
}
}
打印任务排序
let strings = readLine().split(",").map(i=>parseInt(i));
let len = strings.length;
let mask = [];
let list = [];
for(let i=0;i<len;i++){
let num = strings[i];
let temp = [];
temp.push(i);
temp.push(num);
mask.push(temp);
}
while (mask.length > 0){
let first = mask[0][1];
let isDayin = true;
for (let l of mask){
if(first<l[1]){
let temp = mask.shift();
mask.push(temp);
isDayin = false;
break;
}
}
if(isDayin){
let dayin = mask.shift();
list.push(dayin[0]);
}
}
let res = [];
for (let i=0;i<len;i++){
res[list[i]] = i;
}
console.log(res.join(","));
【华为OD机试真题 JS】IPv4地址转换成整数
let strings = readLine().split("#");
let len = strings.length;
let count = 0;
let isF = true;
if(len==4){
for(let i=0;i<len;i++){
let n = Number(strings[i]);
if(i==0 && (n<1 || n>128)){
isF = false;
break;
}else if(n<0 || n>255){
isF = false;
break;
}
count += n<<(8*(3-i));
}
}else {
isF = false;
}
if(isF){
console.log(count);
}else {
console.log("invalid IP");
【华为OD机试真题 JS】日志排序
var linNum = Number(readLine());
var lists = [];
for(let i=0;i<linNum;i++){
var list = [];
var strings = readLine().replace(".",":").split(":");
for(let j=0;j<strings.length;j++){
list.push(strings[j]);
}
lists.push(list);
}
lists.sort((a,b)=>{
if(Number(b[0])>Number(a[0])){
return -1;
}
if(Number(b[0])<Number(a[0])){
return 1;
}
if(Number(b[1])>Number(a[1])){
return -1;
}
if(Number(b[1])<Number(a[1])){
return 1;
}
if(Number(b[2])>Number(a[2])){
return -1;
}
if(Number(b[2])<Number(a[2])){
return 1;
}
if(Number(b[3])>Number(a[3])){
return -1;
}
if(Number(b[3])<Number(a[3])){
return 1;
}
return 1;
});
for(let i=0;i<linNum;i++){
console.log(lists[i][0]+":"+
lists[i][1]+":"+
lists[i][2]+"."+
lists[i][3]);
}
【华为OD机试真题 JS】寻找相同子串
let t = readLine();
let p = readLine();
if(t.length>1000000){
console.log("No");
}
if(p.length>t.length && p.length>10000){
console.log("No");
}
console.log(t.indexOf(p) == -1? "No" : t.indexOf(p)+1);
【华为OD机试真题 JS】斗地主之顺子
let s = readLine().split(" ");
let len = s.length;
let list = [];
for(let i=0;i<len;i++){
switch (s[i]){
case "J":
list.push(11);
break;
case "Q":
list.push(12);
break;
case "K":
list.push(13);
break;
case "A":
list.push(14);
break;
case "2":
break;
default:
list.push(Number(s[i]));
}
}
list.sort((a,b)=>{
return a-b;
});
let ress = [];
let isA = false;
while (!isA){
let res = [];
res.push(list[0]);
let count = 1;
for(let i=1;i<list.length;i++){
let x = list[i];
if(x==list[i-1]+1){
count++;
res.push(x);
}else if(x==list[i-1] && i!=list.length-1){
continue;
}
if(x!=list[i-1]+1 || i==list.length-1){
if(count>=5){
ress.push(res);
}else if(i==list.length-1){
isA = true;
break;
}
for(let j=0;j<res.length;j++){
for(let k=0;k<list.length;k++){
if(res[j] == list[k]){
list.splice(list.indexOf(list[k]),1);
break;
}
}
}
if(list.length<5){
isA = true;
}
break;
}
}
}
if(ress.length==0){
console.log("No");
}else {
for(let i=0;i<ress.length;i++){
let stringRes = "";
for(let j=0;j<ress[i].length;j++){
switch (ress[i][j]){
case 11:
stringRes+="J";
break;
case 12:
stringRes+="Q";
break;
case 13:
stringRes+="K";
break;
case 14:
stringRes+="A";
break;
default:
stringRes+=ress[i][j];
}
if(j<ress[i].length-1){
stringRes+=" ";
}
}
console.log(stringRes);
}
【华为OD机试真题 JS】统计射击比赛成绩
let n = Number(readLine());
let s1 = readLine().split(",");
let s2 = readLine().split(",");
let map = {}
for(let i=0;i<n;i++){
let key = Number(s1[i]);
let value = Number(s2[i]);
if(map[key]){
map[key].push(value);
}else {
let list = [];
list.push(value);
map[key] = list;
}
}
var scoreLists = [];
for(var key in map){
let len = map[key].length;
if(len>=3){
let list = [];
map[key].sort();
list.push(key);
list.push(map[key][len-1] + map[key][len-2] + map[key][len-3]);
scoreLists.push(list);
}
}
scoreLists.sort((a,b)=>{
if(b[1]>a[1]){
return 1;
}
if(b[1]==a[1] && b[0]>a[0]){
return 1;
}
return -1;
});
let res = "";
let scoListsLen = scoreLists.length;
for(let i=0;i < scoListsLen - 1;i++){
res+=scoreLists[i][0]+",";
}
console.log(res+scoreLists[scoListsLen-1][0]);
【华为OD机试真题 JS】喊7的次数重排
let s = sc.radLine().split(" ").map(i=>parseInt(i));;
let len = s.length;
let ints = new Array(len).fill(0);
let num = 0;
for(let i=0;i<len;i++){
num += s[i];
}
let step = 7;
while (num>0){
if(step%7==0 || String(step).indexOf("7")!=-1){
ints[(step-1)%len]++;
num--;
}
step++;
}
let res = "";
for(let i=0;i<len;i++){
res+=String(ints[i]);
if(i == len-1){
break;
}
res+=" ";
}
console.log(res);
【华为OD机试真题 JS】最大矩阵和
let n = Number(readLine());
let m = Number(readLine());
let ints = [];
for(let i=0;i<n;i++){
let input = test[i].split(",").map(i=>parseInt(i));
let hang = [];
for(let j=0;j<m;j++){
hang[j] = input[j];
}
ints[i] = hang;
}
let max = 0;
for(let start_row = 0;start_row<n;start_row++){
for(let start_col = 0;start_col<m;start_col++){
for(let end_row = start_row;end_row<n;end_row++){
let jisuan = 0;
for(let end_col = start_col;end_col<m;end_col++){
let rowindex = end_row;
while (rowindex>=start_row){
jisuan+=ints[rowindex][end_col];
rowindex--;
}
max = Math.max(max,jisuan);
}
}
}
}
console.log(max);
【华为OD机试真题 JS】分班
let strings = "6/N 8/Y 6/N 10/Y".split(" ");
let list1 = [];
let list2 = [];
let b = true;
let isError = false;
let isDigit = new RegExp("^[0-9]*$")
for(let i=0; i<strings.length; i++){
let x = strings[i].split("/");
if(!isDigit.test(x[0])){
isError = true;
break;
}
let stu = Number(x[0]);
if((x[1] != "N" && x[1] != ("Y"))
|| list1.includes(stu)
|| list2.includes(stu))
{
isError = true;
break;
}
if(list1.length == 0){
list1.push(stu);
continue;
}
if(b){
if(x[1] == "N"){
list2.push(stu) ;
b = false;
}else {
list1.push(stu);
}
} else {
if(x[1] == "N"){
list1.push(stu);
b = true;
}else {
list2.push(stu);
}
}
}
if(isError){
console.log("ERROR");
}else {
list1.sort((a,b) =>{return a-b});
list2.sort((a,b) =>{return a-b});
let res1 = "";
let res2 = "";
for(let i=0; i<list1.length; i++){
res1 += list1[i] + " ";
}
for(let i=0; i<list2.length; i++){
res2 += list2[i] + " ";
}
if(list2.length == 0){
console.log(res1.substring(0, res1.length-1));
}else if(list1[0] < list2[0]){
console.log(res1.substring(0, res1.length-1));
console.log(res2.substring(0, res2.length-1));
}else {
console.log(res2.substring(0, res2.length-1));
console.log(res1.substring(0, res1.length-1));
}
}
素数之积
let n = Number(readLine());
let list = [];
let m = 0;
while (m!=n){
n = m!=0? m: n;
for(let i=2;i<Math.sqrt(n)+1;i++){
if(n%i==0){
m = n/i;
list.push(i);
break;
}
}
}
list.push(m);
if(list.length==2){
console.log(list[0]+" "+list[1]);
}else {
console.log("-1 -1");
}
【华为OD机试真题 JS】字符串分割
var fuhe = 0;
var zichuan = 1;
let str = readLine();
let res = 0;
fenge(str,n);
if(fuhe==1){
res = zichuan;
}else if(fuhe>1){
res = -1;
}
console.log(res);
function fenge(s, n){
let len = s.length;
let count = 0;
for(let i=0;i<len;i++){
count+=s.charCodeAt(i);
if(count>999){
break;
}
if( count>=100 && count<=999){
if(isSXS(count)){
if(i==len-1){
fuhe++;
zichuan = ++n;
}else {
let nums = n;
fenge(s.substring(i+1), ++nums);
}
}
}
}
}
function isSXS(i){
let b = parseInt(i/100);
let s = parseInt(i%100/10);
let g = i%100%10;
let count = (Math.pow(b,3) + Math.pow(s,3) + Math.pow(g,3));
if(count == i){
return true;
}
return false;
}
【华为OD机试真题 JS】数组连续和
let n = Number(readLine());
let x = Number(readLine());
let ints = readLine().split(" ");
let count;
let res = 0;
for(let i=0;i<n;i++){
count = Number(ints[i]);
if(count>=x){
res+=n-i;
break;
}
for (let j=i+1;j<n;j++){
count+=Number(ints[j]);
if(count>=x){
res+=n-j;
break;
}
}
}
console.log(res);
【华为OD机试真题 JS】拼接URL
let s = readLine().split(",");
let res = "";
for(let i=0;i<s.length;i++){
if(s[i]!="" && s[i]!="/"){
res+="/"+s[i].replace("/","");
}
}
console.log(res=="" ? "/" : res);
【华为OD机试真题 JS】转骰子
let s = readLine();
let res = "123456";
for(let i=0;i<s.length;i++){
res = zhuanSZ(s.charAt(i),res);
}
console.log(res);
function zhuanSZ(s, sz){
let s1 = sz.charAt(0);
let s2 = sz.charAt(1);
let s3 = sz.charAt(2);
let s4 = sz.charAt(3);
let s5 = sz.charAt(4);
let s6 = sz.charAt(5);
switch (s){
case "L":
return s5+s6+s3+s4+s2+s1;
case "R":
return s6+s5+s3+s4+s1+s2;
case "F":
return s1+s2+s5+s6+s4+s3;
case "B":
return s1+s2+s6+s5+s3+s4;
case "A":
return s4+s3+s1+s2+s5+s6;
case "C":
return s3+s4+s2+s1+s5+s6;
}
return "";
}
【华为OD机试真题 JS】分糖果
var list = [];
let n = Number(readLine());
fentangguo(n,0);
list.sort((a,b)=>{
if(b>a){
return -1;
}
return 1;
});
console.log(list[0]);
function fentangguo(n,m){
if (n==1) {
list.push(m);
return 1;
}
if(n%2==0){
m++;
fentangguo(n/2,m);
}else{
m++;
fentangguo(n-1,m);
fentangguo(n+1,m);
}
return 0;
}
【华为OD机试真题 JS】找终点
let nums = readLine().split(" ").map(i=>parseInt(i));
let ints = [];
let len = nums.length;
for(let i=0;i<len;i++){
ints[i] = nums[i];
}
let step = 0;
let count = 0;
let x = Number.MAX_VALUE;
for(let i=0;i<len/2-1;i++){
step = i;
count = 1;
while (step < len-1) {
step += ints[step];
count++;
}
if(step == len-1){
x = Math.min(x,count);
}
}
if(x==Number.MAX_VALUE){
console.log("-1");
}else {
console.log(x);
}
【华为OD机试真题 JS】服务器广播
let input = readline().split(" ").map(Number);
let n = input.length;
var list = [];
for(let i=0; i<n; i++){
if(input[i] == 1){
let temp = [];
temp.push(1);
temp.push(i+1);
list.push(temp);
}
}
for(let i=1; i<n; i++){
input = readline().split(" ").map(Number);
for(let j=0; j<n; j++){
if(input[j]==1 && j>=i){
let temp = [];
temp.push(i+1);
temp.push(j+1);
list.push(temp);
}
}
}
let res = 0;
while (list.length>0){
let temp = list[0];
list.splice(0,1);
connectNet(temp);
res++;
}
console.log(res);
function connectNet(intList){
for(let i=0; i<list.length; i++){
let temp = list[i];
let a = temp[0];
let b = temp[1];
if(intList.includes(a) || intList.includes(b)){
temp.forEach(element => {
if(!intList.includes(element)){
intList.push(element);
}
});
list.splice(i,1);
connectNet(intList);
}
}
}
【华为OD机试真题 JS】打印任务排序
let strings = readLine().split(",").map(i=>parseInt(i));
let len = strings.length;
let mask = [];
let list = [];
for(let i=0;i<len;i++){
let num = strings[i];
let temp = [];
temp.push(i);
temp.push(num);
mask.push(temp);
}
while (mask.length>0){
let first = mask[0][1];
let isDayin = true;
for (let l of mask){
if(first<l[1]){
let temp = mask.shift();
mask.push(temp);
isDayin = false;
break;
}
}
if(isDayin){
let dayin = mask.shift();
list.push(dayin[0]);
}
}
let res = [];
for (let i=0;i<len;i++){
res[list[i]] = i;
}
console.log(res.join(","))
停车场车辆统计
let cars = readLine().split(",");
let count = 0;
let res = 0;
for(let i=0;i<cars.length;i++){
if(cars[i]=="1"){
count++;
}else{
if(count!=0){
res++;
count = 0;
}
continue;
}
if(count==3 || i==cars.length-1){
res++;
count = 0;
}
}
console.log(res);
【华为OD机试真题 JS】相对开音节
let s = readLine().split(" ");
let len = s.length;
let count = 0;
let reg = new RegExp("^[a-zA-Z]+$");
for(let i=0;i<len;i++){
let str = s[i];
let strLen = str.length;
if(strLen<4){
continue;
}
if(reg.test(str)){
str = str.split("").reverse().join("");
}
for(let j=0;j<=strLen-4;j++){
if(isKYJ(str.substring(j,j+4))){
count++;
}
}
}
console.log(count);
function isKYJ(str){
let yuanyin = "aeiou";
let fuyin = "bcdfghjklmnpqrstvwxyz";
let s1 = str[0];
let s2 = str[1];
let s3 = str[2];
let s4 = str[3];
if(fuyin.indexOf(s1)!=-1
&& yuanyin.indexOf(s2)!=-1
&& fuyin.indexOf(s3)!=-1 && s3!="r"
&& s4=="e") {
return true;
}
return false;
}
【华为OD机试真题 JS】信道分配
let R = Number(readLine());
let nInput = readLine().split(" ").map(i=>parseInt(i));
let N = [];
for(let i=0;i<=R;i++){
N[i] = nInput[i];
}
let D = Number(readLine());
let list = [];
let res = 0;
for(let i=0;i<=R;i++){
for(let j=0;j<N[i];j++){
let num = Math.pow(2,i);
if(num>=D){
res++;
continue;
}
list.push(num);
}
}
let isEnough = true;
while (isEnough){
let count = list[list.length-1];
list.splice(list.length-1,1);
while (count<D && isEnough){
let min = Number.MAX_VALUE;
let minindex = 0;
let temp = 0;
for(let i = 0;i<list.length;i++){
temp+=list[i];
let chazhi = Math.abs(D-count-list[i]);
min = Math.min(min, chazhi);
if(min == chazhi){
minindex = i;
}
}
count+=list[minindex];
list.splice(minindex,1);
if(count>=D){
res++;
break;
}
if(count+temp<D){
isEnough = false;
}
}
}
console.log(res);
【华为OD机试真题 JS】太阳能板最大面积
let strings = readLine().split(",");
let num = [];
for(let m=0;m<strings.length;m++){
num[m] = Number(strings[m]);
}
let max = 0;
for(let n=1;n<num.length;n++){
let min = num[n];
let temp = n-1;
for(let i=1;i<=n;i++){
min = Math.min(min,num[temp--]);
max = Math.max(min*i,max);
}
}
console.log(max);
【华为OD机试真题 JS】连续字母长度
let s = readLine();
let n = Number(readLine());
let map = {};
let count = 1;
for(let i=0;i<s.length-1;i++){
if(s.charAt(i)==s.charAt(i+1)){
count++;
} else {
if(map[s.charAt(i)]){
count = Math.max(count,map[s.charAt(i)]);
}
map[s.charAt(i)] = count;
count = 1;
}
if(i==s.length-2){
let key = count==1 ? s.charAt(i+1) : s.charAt(i);
map[key] = count;
}
}
let list = [];
for (let c in map
) {
list.push(map[c]);
}
list.sort((a,b)=>{
if (b>a){
return 1;
}
return -1;
});
if(list.length>=n){
console.log(list[n-1]);
}else {
console.log(-1);
}
【华为OD机试真题 JS】矩阵最大值
let n = Number(readLine());
let res = 0;
for(let i=0;i<n;i++){
let s = readLine().replaceAll(",","");
let max = 0;
for(let j=0;j<n;j++){
let newS = s.substring(j) + s.substring(0,j);
max = Math.max(max,parseInt(newS,2));
}
res+=max;
}
console.log(res);
【华为OD机试真题 JS】判断字符串子序列
let target = readLine();
let source = readLine();
let n1 = target.length;
let n2 = source.length;
let n = 0;
let res = n2;
for(let i=n1-1;i>=0;i--){
for(let j=res-1;j>=0;j--){
if(target.charAt(i)==source.charAt(j)){
n++;
res = j;
break;
}
}
}
if(n==n1){
console.log(res);
}else {
console.log(-1);
}
【华为OD机试真题 JS】解压报文
let s = readLine();
let res = "";
let numStr = "";
let num = [];
let zimu = [];
for(let i=0;i<s.length;i++){
let c = s.charAt(i);
if(!isNaN(Number(c))){
if(res.length!=0){
zimu.push(res);
res = "";
}
numStr += c;
}else if(c=='['){
num.push(Number(numStr));
numStr = "";
}else if(c==']'){
let n = num.pop();
if(res.length!=0){
zimu.push(res);
res = "";
}
let temp = zimu.pop();
let sb = "";
for(let j=0;j<n;j++){
sb+=temp;
}
if(zimu.length==0){
zimu.push(sb);
}else {
zimu.push(zimu.pop()+sb);
}
}else {
res+=c;
}
}
console.log(zimu);
【华为OD机试真题 JS】报数游戏
let n = Number(readLine());
let list = [];
for(let i=1;i<=100;i++){
list.push(i);
}
let i=n-1;
while (list.length>=n){
list.splice(i,1);
i--;
i = i+n<list.length ? i+n : i+n-list.length;
}
console.log(list);