2014-09-24下午,在一家宾馆,记录问到的几个问题:
在一个很大的平面图上,有很多的点(大数问题,不能每次循环),让求到给定的某点距离为500(或者其他数)的所有点的坐标,在存储数据时应该如何存储。
可以这么干:
a | b |
c | d |
aa | ab | ba | bb |
ac | ad | bc | bd |
ca | cb | da | db |
cc | cd | dc | dd |
每个数据存储时,不但存储坐标值x,y,还要存储所在块的信息。
二面:旋转字符串,两个字符串,判断第二个是否是第一个旋转得到的,比如:abc和cab就是一对旋转
解决方法1(这是面试官最后给出的解法):原字符串abc,cab是一个旋转,保存两个旋转cab cab 就能看出规律了,只判断cabcab是否包含abc就可以了,最好能用KMP算法解决之。
解决方法2(当时自己想到的,在没有重复字符时可以用):两个指针分别指向两个字符串,p1一直向后走,直到找到p2;然后同时向后移动,若出现不同字符,则肯定不是最后结果;一直到p1指向最后;然后p1回到最开始,继续同时向后移动,直到p2指向最后。。。。