一、给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。
function getSubLongStr(str){
const map = new Map();
const set = new Set();
const len = str.length;
let j=-1,i=0,max = 0;
for(;i<len;i++){
if(i!==0){
const num = set.size;
const subStri = Array.from(set).join('');
if(map.has(num)){
map.get(num).push(subStri)
}else{
map.set(num,[subStri])
}
set.delete(str.charAt(i-1));
}
while(j+1 < len && !set.has(str.charAt(j+1)) ){
set.add(str.charAt(j+1));
j++;
}
max = Math.max(max, j-i +1);
}
return {
max: max,
strArr: map.get(max)
}
}
二、汽水瓶
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足 1≤n≤100 1≤n≤100
注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
while ((line = await readline())) {
let list = [];
list.push(parseInt(line));
for (let index = 0; index < 9; index++) {
let count = parseInt(await readline());
if (count === 0) {
break;
}
list.push(count);
}
let result = []
list.forEach(item => {
let drinkCount = 0;// 喝的饮料数
while (item >= 3) {
let changeBottles = parseInt(item / 3);// 能换的饮料数
let otherBottoles = item % 3;// 每次兑换剩下的瓶子数
drinkCount += changeBottles;
item = changeBottles + otherBottoles;
}
if (item === 2) {
drinkCount ++;
}
result.push(drinkCount);
})
for (const item of result) {
console.log(item);
}
}
}()
三、明明的随机数
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围: 1≤n≤1000 1≤n≤1000 ,输入的数字大小满足 1≤val≤500 1≤val≤500
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
let n = parseInt(await readline());
let set = new Set();
for(let i =0; i < n;i++){
let num = parseInt(await readline());
set.add(num);
}
let arr = Array.from(set).sort((a,b)=>a-b);
arr.forEach(item=>{
console.log(item);
})
})();
四、进制转换
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤231−1 1≤n≤231−1
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
console.log(parseInt(line,16))
}
}()
//datawhalechina.github.io/huawei-od-p… //renjie.blog.csdn.net/article/det…