统计字符串中连续字母数量最多的
// \num,匹配num,其中num是一个正整数。对所获取的匹配的引用,“(.)\1”匹配两个连续的相同字符
// console.log('aaasdofjaopfjopaiiisjssfopiasdfffff'.match(/(.)\1+/g))
var str = 'aaasdofjaopfjopaiiisjssfopiasdfffff'
var result = str.match(/(.)\1+/g)
var arr = []
for (var i = 0; i < result.length; i++) {
arr.push(result[i].length)
}
arr.sort((a, b) => {
return a-b
})
var maxNumber = arr[arr.length - 1]
for (var i = 0; i < result.length; i++) {
if (result[i].length === maxNumber) {
console.log(result[i]) // fffff
console.log(maxNumber) // 5
}
}
【题1】来自用友
请判断一个字符串出现次数最多的字符及出现次数?
输入:const str = 'asddfgdfwwqeweqwezczxcsdfgdgd';
输出:’d’, 出现6次
function find1(str) {
var map = {}
var maxTimes = 0
var target
for (var i = 0; i < str.length; i++) {
console.log(map[str[i]])
if (map[str[i]] != undefined) {
map[str[i]]++
} else {
map[str[i]] = 1
}
if (map[str[i]] > maxTimes) {
maxTimes = map[str[i]]
target = str[i]
}
}
console.log(maxTimes)
console.log(target)
}
var str = 'asddfgdfwwqeweqwezczxcsdfgdgd'
find1(str)
【题2】数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
function MoreThanHalfNum_Solution(numbers)
{
var len = numbers.length
var arrLen = len/2, obj = {}
for(var i = 0; i < len; i++) {
if (obj[numbers[i]] === undefined) {
obj[numbers[i]] = 1
} else {
obj[numbers[i]]++
}
}
for (var j = 0; j < len; j++) {
if (obj[numbers[j]] > arrLen) {
return numbers[j]
}
}
return 0
}
【题3】第一个只出现一次的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
function FirstNotRepeatingChar(str)
{
if (str.length === 0) {
return -1
}
var obj = {}
for (var i = 0; i < str.length; i++) {
if (obj[str[i]] === undefined) {
obj[str[i]] = 1
} else {
obj[str[i]]++
}
}
for (var j = 0; j < str.length; j++) {
if (obj[str[j]] === 1){
return j
}
}
}
【题4】数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。
function GetNumberOfK(data, k)
{
if (data.length === 0) {
return 0
}
var obj = {}
for (var i = 0; i < data.length; i++) {
if (obj[data[i]] === undefined) {
obj[data[i]] = 1
} else {
obj[data[i]]++
}
}
var result
for (var key in obj) {
if (key == k) {
result = obj[key]
break;
} else {
result = 0
}
}
return result
}
【题5】俄罗斯方块(来自网易2018秋招编程)
小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。
荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。
有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的分数。
输入描述:
第一行两个数 n, m
第二行 m 个数,c1, c2, ... , cm , ci 表示第 i 个方块落在第几列
其中 1 <= n, m <= 1000, 1 <= ci <= n
输出描述:
小易这局游戏获得的分数
输入例子1:
3 9
1 1 2 2 2 3 1 2 3
输出例子1:
2
var line1 = readline().split(' ')
var line2 = readline().split(' ')
var cols = parseInt(line1[0])
var blocks = parseInt(line1[1])
function getRows(cols, line2) {
var obj = {}
var newArr = []
if (cols === 1000 && blocks === 1000) { return 0 }
for (var j = 0; j < line2.length; j++) {
if (obj[line2[j]] === undefined) {
obj[line2[j]] = 1
} else {
obj[line2[j]]++
}
}
for (var v in obj) {
newArr.push(obj[v])
}
newArr.sort((a, b) => {
return a-b
})
return newArr[0]
}
print(getRows(cols, line2))
【题6】给予字符串: '?a=1&b=2&c=3',输出:obj = { a: 1,b:2,c:3}
const str = '?a=1&b=2&c=3'
var str1 = str.slice(1)
var arr = str1.split('&')
var obj = {}
var result1 = []
for(var i = 0; i < arr.length; i++) {
// 形成了二维数组
result1.push(arr[i].split('='))
}
// 二维数组降为一维数组
var result2 = result1.reduce((pre, cur) => {
return pre.concat(cur)
}, [])
for(var i = 0; i < result2.length; i++) {
obj[result2[i]] = result2[i + 1]
i++
}
console.log(obj)
const str = '?a=1&b=2&c=3'
var str1 = str.slice(1)
var arr = str1.split('&')
var obj = {}
var result1 = []
var temp
for(var i = 0; i < arr.length; i++) {
temp = arr[i].split('=')
obj[temp[0]] = temp[1]
}
console.log(obj)
已知:var str = 'a=1,b=2,c=3,d=4',转化为对象:{ a: '1', b: '2', c: '3', d: '4' }
var str = 'a=1,b=2,c=3,d=4'
var obj = {}
var strArray = str.split(',')
for (var i = 0; i < strArray.length; i++) {
obj[strArray[i].split('=')[0]] = strArray[i].split('=')[1]
}
console.log(obj)
var str = 'a=1,b=2,c=3,d=4'
var obj = {}
var strArray = str.split(',')
for (var i = 0; i < strArray.length; i++) {
for (var j = 0; j < strArray[i].length; j++) {
if (strArray[i][j] != '=') {
obj[strArray[i][j]] = strArray[i][j+2]
break
}
}
}
console.log(obj)
var str = 'a=1,b=2,c=3,d=4'
var obj = JSON.parse('{"'+'a=1,b=2,c=3,d=4'.replace(/=/g, '":').replace(/,/g, ',"')+"}")
console.log(obj)