744 尋找比目標字母大的最小字母

2021-10-03 14:23:38 字數 1619 閱讀 8633

給定乙個只包含小寫字母的有序陣列letters和乙個目標字母target,尋找有序陣列裡面比目標字母大的最小字母。

陣列裡字母的順序是迴圈的。舉個例子,如果目標字母target = 'z'並且有序陣列為letters = ['a', 'b'],則答案返回'a'

輸入:

letters =

["c"

,"f"

,"j"

]target =

"a"輸出:

"c"輸入:

letters =

["c"

,"f"

,"j"

]target =

"c"輸出:

"f"輸入:

letters =

["c"

,"f"

,"j"

]target =

"d"輸出:

"f"輸入:

letters =

["c"

,"f"

,"j"

]target =

"g"輸出:

"j"輸入:

letters =

["c"

,"f"

,"j"

]target =

"j"輸出:

"c"輸入:

letters =

["c"

,"f"

,"j"

]target =

"k"輸出:

"c"

直接用暴力法從後往前跳過比target大的字母就可以了。

如果乙個都沒有跳過,就都比target小,則返回第乙個字母即可。(方法一)

由於字母是有序的,該題目本質上是在找target的插入位置,如果應該插入在末尾,則證明原列表沒有target的插入位置,所以都比target小,返回第乙個即可。否則返回插入位置。left是插入位置。為啥?因為最後乙個比較的字母是mid,如果mid <= target, 則left = mid +1, 即left是插入位置;相反,如果mid > target, 則證明mid就是插入位置。此時mid == left. 故我們只需要返回left即可。(方法二)

public

char

nextgreatestletter

(char

letters,

char target)

return letters[right+1]

;}

class

solution

else}if

(left == letters.length)

return letters[left];}

}

尋找比目標字母大的最小字母

給定乙個只包含小寫字母的有序陣列letters 和乙個目標字母 target,尋找有序陣列裡面比目標字母大的最小字母。陣列裡字母的順序是迴圈的。舉個例子,如果目標字母target z 並且有序陣列為 letters a b 則答案返回 a 示例 輸入 letters c f j target a 輸...

153 尋找比目標字母大的最小字母

給定乙個只包含小寫字母的有序陣列letters 和乙個目標字母 target,尋找有序陣列裡面比目標字母大的最小字母。陣列裡字母的順序是迴圈的。舉個例子,如果目標字母target z 並且有序陣列為 letters a b 則答案返回 a 示例 輸入 letters c f j target a 輸...

尋找比目標字母大的最小字母(YYOJ)

題目描述 lzy又來搞字串了,他現在給你乙個只包含小寫字母的有序字串str 和乙個目標字母 target,尋找有序陣列裡面比目標字母大的最小字母。裡字母的順序是迴圈的。舉個例子,如果目標字母target z 並且有序字串為 ab 則答案返回 a 輸入 測試樣例由多組測試資料組成。每組測試資料第一行輸...