leetcode 744. 尋找比目標字母大的最小字母(python)
阿新 • • 發佈:2018-11-07
給定一個只包含小寫字母的有序陣列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"
注:
思路:
1、利用集合特性排除多餘元素,利用內建的sorted()函式排序給經過結合去重的列表元素進行排序。
2、對排好序的元素進行處理,如果target在列表中,返回的是target後邊的元素;如果不在,append()函式插入target元素後再找target後邊的元素返回。
letters
長度範圍在[2, 10000]
區間內。letters
僅由小寫字母組成,最少包含兩個不同的字母。- 目標字母
target
是一個小寫字母。
class Solution(object): def nextGreatestLetter(self, letters, target): """ :type letters: List[str] :type target: str :rtype: str """ letters_sort = sorted(set(letters)) if target in letters_sort and letters_sort.index(target) < len(letters_sort) - 1: return letters_sort[letters_sort.index(target) + 1] elif target in letters_sort and letters_sort.index(target) == len(letters_sort) - 1: return letters_sort[0] elif target not in letters_sort: letters_sort.append(target) letters_sortNew = sorted(letters_sort) if letters_sortNew.index(target) == len(letters_sortNew) - 1: return letters_sortNew[0] else: return letters_sortNew[letters_sortNew.index(target) + 1]