Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでターゲットよりも大きい最小の文字を見つける


ソートされた文字の文字のリストがあるとします。これには小文字のみが含まれています。ターゲット文字tがあります。リスト内で、指定されたターゲットよりも大きい最小の要素を見つける必要があります。

そして、文字も回ります。したがって、ターゲットがt ='z'で文字=['a'、'b']の場合、答えは'a'です。

したがって、入力が["c"、 "f"、 "j"]、t ='a'の場合、出力は'c'になります。

これを解決するには、次の手順に従います-

  • l:=0
  • r:=文字のサイズ-1
  • l <=rの場合、do
    • mid:=(l + r)/2整数として
    • 文字[mid]>がターゲットの場合、
      • r:=mid -1
    • それ以外の場合、
      • l:=mid + 1
  • 文字を返す[文字のlmodサイズ]

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def nextGreatestLetter(self, letters, target):
      l = 0
      r = len(letters) - 1
      while l <= r:
         mid = (l + r)//2
         if letters[mid] > target:
            r = mid -1
         else:
            l = mid + 1
      return letters[l % len(letters)]
ob = Solution()
print(ob.nextGreatestLetter(["c", "f", "j"], "a"))

入力

["c", "f", "j"], "a"

出力

c

  1. Pythonでxより大きい最小の数を見つける方法は?

    組み込み関数ceil()は、指定された数値よりも大きい最小の数値を返します >>> x=6.67 >>> import math >>> math.ceil(x) 7 >>> x=1.13 >>> math.ceil(x) 2 >>> x=5.78 >>> math.ceil(x) 6 >>> x=-5.78 >>> math.ceil(x) -5 -5は-5.78より大きいことに注意してください

  2. Pythonを使用してLCMを見つける方法は?

    2つ(またはそれ以上)の数値のLCM(最小公倍数)は、両方(またはすべて)で割り切れる最小の数値です。 最初に、2つの与えられた数の大きい方を見つけます。それから始めて、両方で割り切れる最初の数、つまりLCMを見つけようとします 例 x=12 y=20 if x > y:      greater = x   else:      greater = y   while(True):      if((greater % x == 0) and (greater % y == 0