javascript - 面试题求救啊

查看:116
本文介绍了javascript - 面试题求救啊的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

第一题:给定一个字符串,请你将字符串重新编码,将连续的字符替换成连续出现的个数+字符。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。

第二题:在一个N*N的数组中寻找所有横,竖,左上到右下,右上到左下,四种方向的直线连续D个数字的和里面最大的值
输入描述:
每个测试输入包含1个测试用例,第一行包括两个整数 N 和 D :
3 <= N <= 100
1 <= D <= N
接下来有N行,每行N个数字d:
0 <= d <= 100

输出描述:
输出一个整数,表示找到的和的最大值

输入例子:
4 2
87 98 79 61
10 27 95 70
20 64 73 29
71 65 15 0

输出例子:
193

第三题:大家一定玩过推箱子这个经典的游戏。具体规则就是在一个N*M的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。当箱子被推到目的地以后,游戏目标达成。现在告诉你游戏开始是初始的地图布局,请你求出玩家最少需要移动多少步才能够将游戏目标达成。
输入描述:
每个测试输入包含1个测试用例
第一行输入两个数字N,M表示地图的大小。其中0<N,M<=8。
接下来有N行,每行包含M个字符表示该行地图。其中 . 表示空地、X表示玩家、*表示箱子、#表示障碍、@表示目的地。
每个地图必定包含1个玩家、1个箱子、1个目的地。

输出描述:
输出一个数字表示玩家最少需要移动多少步才能将游戏目标达成。当无论如何达成不了的时候,输出-1。

输入例子:
4 4
....
..*@
....
.X..
6 6
...#..
......

*##..

..##.#
..X...
.@#...

输出例子:
3
11

第四题:在一条无限长的跑道上,有N匹马在不同的位置上出发开始赛马。当开始赛马比赛后,所有的马开始以自己的速度一直匀速前进。每匹马的速度都不一样,且全部是同样的均匀随机分布。在比赛中当某匹马追上了前面的某匹马时,被追上的马就出局。 请问按以上的规则比赛无限长的时间后,赛道上剩余的马匹数量的数学期望是多少
输入描述:
每个测试输入包含1个测试用例
输入只有一行,一个正整数N
1 <= N <= 1000

输出描述:
输出一个浮点数,精确到小数点后四位数字,表示剩余马匹数量的数学期望

输入例子:
1
2

输出例子:
1.0000
1.5000

解决方案

第一题:

var key = "AAAABCCDAA";
var result = "";
var lastKey = "", lastKeyCount = 0, currentKey;
for(var i = 0; i < key.length; i++ ){
    currentKey = key.substr(i,1);
    if( currentKey == lastKey ){
        lastKeyCount++;
    } else {
        if( lastKey != ""){
            result += lastKeyCount + lastKey;
        }
        lastKey = currentKey;
        lastKeyCount = 1;
    }
}
//最后补全
result += lastKeyCount + lastKey;
console.log(result);

第一题(正则解法):

var key = "AAAABCCDAA";
var result = "";
var currentKey, keyCount, tempArr;
for( var i = 0 ; i < key.length; i++ ){
    currentKey = key.substr(i, 1);
    tempArr = (new RegExp('^' + currentKey + '+')).exec( key.substr(i) );
    result += tempArr[0].length + currentKey;
    i += tempArr[0].length - 1;
}
console.log(result);

第一题(终极解法):
@listenWind 的启发,写完后 和 @莲_涳栢__ 撞车了,思路一样,只是正则不一样。

var key = "AAAABCCDAA";
var result = key.replace(/(\w)\1*/ig, function($1, $2){return $1.length + $2;})
console.log(result);

这篇关于javascript - 面试题求救啊的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆