昨天用递归思想实现了js中的indexOf()函数,今天又想了想,一般情况下人为是如何比对两个字符串的?我们可以把长串看作一个主尺,把短串看作游标,游标从主尺最左端开始,依次比较主尺上与游标对应的刻度(字符)是否相等,相等则返回主尺上游标首刻度对应的刻度的索引;不相等就将游标向右移动一个刻度的长度,继续比较,直到主尺与游标右侧对齐。
先上代码:
//模拟indexOf()函数
String.prototype.myIndexOf = function (sub_str) {
var arr_sub_str = sub_str.split(''); //子串数组化
var arr_main_str = this.toString().split(''); //主串数组化
var sub_len = arr_sub_str.length; //子串长度
var main_len = arr_main_str.length; //主串长度