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

文字列をチェックするプログラムに、Pythonで連続して降順の文字列が含まれているかどうか


いくつかの数字を含む文字列sがあるとすると、連続して降順の整数が含まれているかどうかを確認する必要があります。

したがって、入力がs ="99989796"の場合、この文字列は[99,98,97,96]

を保持しているため、出力はTrueになります。

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

  • 関数helper()を定義します。これにはpos、prev_num

    が必要です
  • posがnと同じ場合、

    • Trueを返す

  • num_digits:=prev_numの桁数

  • num_digits-1からnum_digitsの範囲のiの場合、実行

    • s[インデックス位置から位置+i-1へ]およびs[インデックス位置から位置+i-1へ]の数値形式がprev_num-1と同じである場合、

      • helper(pos + i、prev_num-1)の場合、

      • Trueを返す

    • Falseを返す

    • メインの方法から、次のようにします-

    • n:=sのサイズ

    • 1からn/2の商までの範囲のiについては、次のようにします

      • num:=s[インデックス0からi-1まで]の数値形式

      • helper(i、num)がtrueの場合、

      • Trueを返す

    • Falseを返す

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

class Solution:
def solve(self, s):
   n = len(s)
   def helper(pos, prev_num):
   if pos == n:
      return True
   num_digits = len(str(prev_num))
   for i in range(num_digits - 1, num_digits + 1):
      if s[pos:pos+i] and int(s[pos:pos+i]) == prev_num - 1:
         if helper(pos + i, prev_num - 1):
            return True
      return False
   for i in range(1, n//2 + 1):
      num = int(s[:i])
   if helper(i, num):
      return True
   return False
ob = Solution()
s = "99989796"
print(ob.solve(s))

入力

"99989796"

出力

True

  1. 文字列が空かどうかをチェックするPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を入力したら、文字列が空かどうかを確認する必要があります。 Python文字列は本質的に不変であるため、操作を実行するときは、文字列を処理するときに注意が必要です。 ここでは、上記の問題ステートメントを解決するための2つのアプローチについて説明します- len()メソッドを使用します。 等式演算子を使用します。 アプローチ1:len()メソッドを使用する 例 test_str1 = "" test_str2 = "@@@" if(l

  2. 文字列にすべての一意の文字が含まれているかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 sring入力が与えられた場合、文字列にすべての一意の文字が含まれているかどうかを確認する必要があります。 アプローチ ブール値の配列を作成します。ここで、インデックスiの変数フラグは、アルファベットの文字iが文字列に含まれているかどうかを示します。 この文字に2回目に遭遇したとき、文字列文字は一意ではなくなったため、すぐにfalseを返すことができます。 文字列の長さがアルファベットに表示される一意の文字数の値を超える場合も、falseを返すことができます。 文