字符串问题---在有序但含有空的数组中查找字符串

来源:互联网 发布:sql 表字段添加注释 编辑:程序博客网 时间:2024/06/14 02:00

【题目】

  给定一个字符串数组strs[],在strs中有些位置为null,但在不为null的位置上,其字符串是按照字典顺序从小到大依次出现的。再给定一个字符串str,请返回str在strs中出现最左的位置。

【基本思路】

  因为字符串是有顺序的,所以可以使用二分查找,只要注意处理null位置就行。并且注意所求的是最左的位置,所以找到一个str的位置还要再考虑数组中是否还有更左的str。

下面是使用python3.5实现的代码

#在有序但含有空的数组中查找字符串def getIndex(strs, str1):    if strs == None or len(strs) == 0 or str1 == None:        return -1    left = 0    right = len(strs) - 1    res = -1    while left <= right:        mid = (right + left) // 2        if strs[mid] == str1:            res = mid            right = mid - 1        elif strs[mid] != None:            if strs[mid] < str1:                left = mid + 1            else:                right = mid - 1        else:            i = mid            while i >= left:                if strs[i] != None:                    break                i -= 1            if i < left or strs[i] < str1:                left = mid + 1            else:                res = i if strs[i] == str1 else res                right = i - 1    return res
阅读全文
2 0
原创粉丝点击