存在乙個排序後的字串陣列,其中散布著一些空字串。根據使用者輸入的字串進行索引。例如,有序字串陣列。
方法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
方法(二分查詢,遞迴方式)
deferfenchazhao(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.用...