微软正式批笔试
情况:正式批第三批笔试,2.26~2.27内任意时间完成,时间为2小时,是在codility上。这次笔试不是很难但感觉自己没能给出最优。供之后准备微软笔试的同学参考呀!!
题目:
1、n个球员站在一排,编号0~n-1,玩家按四个基本方向之一的箭头键:左(<),上(^)或下(v)对球员从左至右进行移动,给定一个表示移动的字符串(如'^ < v >') ,问有多少球员能成功完成一个动作。(简单模拟)
2、给出两个长度相同的字符串,求两个字符串中相“匹配”的字符子串个数,“匹配”是指两个子串在原字符串中起点相同,且两个字符子串长度一致,各字符出现次数一致(同一字符串内部字符不同 排序构成的字符串)
例如:s="dBacaAA" ,t="caBdaaA",答案是5
其中 "dBac"与"caBd"匹配(子串起始位置:0)
"dBaca"与"caBda"匹配( 子串起始位置:0)
"Ba"和"aB"匹配( 子串起始位置:2)
"a"与"a"匹配( 子串起始位置:4)
"A"与"A"匹配( 子串起始位置:6)
3、有N个点位于一条线上,编号从0到N-1,其坐标在数组A中给出。对于给定的整数M,如果子集内任意两个点之间的距离可被M整除,则称这些点的子集为M对齐。要求给出给定N个点集的最大M对齐子集的大小。
例如,考虑整数M = 3和数组A,A[0]=-3,A[1]=-2,A[2]=1,A[3]=0,A[4]=8,A[5]=7,A[6]=1
包含编号为1、2、5和6的点的子集,坐标分别为-2、1、7和1,因为:
- 编号为1和2的点之间的距离为abs(A[1]-A[2])=3
- 从5号点到编号1和2的点的距离分别为9和6
- 从6号点到编号为1、2和5的点的距离分别为3、0和6
- 这些距离都可以被M = 3整除。此子集的大小为4,并且没有更大的3对齐子集。
(数论问题,同余的就是一组)
#微软##笔经#