給定乙個只包含小寫字母的有序陣列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 輸入 測試樣例由多組測試資料組成。每組測試資料第一行輸...