代码改变世界

【Javascript】 字符串替换算法 / 查找数组中枢

2013-10-19 02:31  杨泽川  阅读(446)  评论(0编辑  收藏  举报

 

思考之前先来杯coffee

 

 

--------------------------------------------------------------------------------

面试题:

一、字符串替换算法

 

一个字符串str="abcabcabc";

要查询的字符串src="ab";

替换的字符串tar="xyz";

思路:

新建一个字符串result

在str中分别对src的每一位进行匹配:

1>若全匹配,则添加到result中

2>若不全匹配,则对str后移一位进行匹配查询

返回result

 

返回:"aabxyzDcabDacxyzDabaxyz"

 

 

 

二、查找数组中枢

给定一个数组:arr=[1,2,4,5,7,19,20,30,24,21,3];

它有如下规律:先增后减,找出它的临界点(即最大值),如例子中的30,要求不要用暴力算法。

思路:

用二分法:

临界点的特征是:自身和左边的差值为正((a[n]-a[n-1])>0),和右边的差值为负((a[n+1]-a[n])<0)。

若这两个差值极性相反,则当前指向为所求,若极性相同:

1>当自身和左边的差值为正((a[n]-a[n-1])>0),所求的临界点在右边。

2>当自身和右边的差值为负((a[n+1]-a[n])<0),所求的临界点在左边。

 

注意Javascript中,类似9/2 的分子式,结果为4.5,不是4。所以要利用Math.floor()

 

返回:29。