在有空字串的有序字串陣列中查詢 有點問題

2022-10-10 14:30:20 字數 1146 閱讀 5214

存在乙個排序後的字串陣列,其中散布著一些空字串。根據使用者輸入的字串進行索引。例如,有序字串陣列。

方法1(二分查詢,迭代方式):

a=['

a','','

ac','','

ad','','

b','','ba'

]b=input()

x=0y=len(a)-1

while 1>0: //跟二分查詢的**一樣,只不過增加乙個判斷。判斷a[item]是否是空串,若是空串,則item往下加1,直到a[item]不是空串為止。

item=(x+y)//2

if a[item]==b:

print(item+1)

break

elif a[item]x=item+1

elif a[item]>b:

y=item-1

elif a[item]==''

: item+=1

if item>y: //有點問題

return -1

elif x>y:

print(-1)

break

方法(二分查詢,遞迴方式)

def

erfenchazhao(a,b,x,y):

item=(x+y)//2

if a[item]==b:

return item+1

elif a[item]>b:

return erfenchazhao(a,b,x,item-1)

elif a[item]return erfenchazhao(a,b,item+1,y)

elif x>y:

return

0

elif a[item]==''

: item+=1

if item>y://有點問題

return -1

a=['

a','','

ac','','

ad','','

b','','ba'

]b=input()

x=0y=len(a)-1num=erfenchazhao(a,b,x,y)

print(num)

在有序但還有空的陣列中查詢字串

題目 思路 這個應該也可以用map的那種吧,不過需要遍歷整個陣列。複雜度是o n 使用二分演算法的話,時間複雜度是o logn 而且這個字元陣列的話還是乙個有序的字元陣列。這個題我自己寫的輸入輸出可能是有些問題,結果不正確。改用直接寫陣列是對的。public static int method st...

在有序但含有空的陣列中查詢字串

題目 給定乙個字串陣列strs,在strs中有些位置為none,但在不為none的位置上,其字串是按照字典順序由小到大依次出現的。再給定乙個字串s,請返回s在strs 現的最左的位置。舉例 strs none,a none,a none,b none,c s a 返回1 strs none,a no...

在有序但含有空的陣列中查詢字串

題目描述 給定乙個字串陣列strs,在strs中有些位置為null,但在不為null的位置上,其字串是按照字典順序由小到大依次出現的。再給定乙個字串str,請返回str在strs 現的最左的位置。舉例 解答 為減少演算法的複雜度,利用字串陣列有序的這一條件,盡可能多的使用了二分查詢,過程如下 1.用...