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

Pythonで文字を時計回りにシフトすることで、ある文字列をチェックするプログラムを別の文字列に変換できます


2つの文字列pとqがあり、数値rもあるとすると、最大r回時計回りにいくつかの文字をシフトしてpをqに変換できるかどうかを確認する必要があります。したがって、例として、「c」は2つの時計回りのシフトを使用して「e」に変換できます。

したがって、入力がp ="abc"、q ="ccc"、r =3の場合、2つの時計回りのシフトを使用して「a」を「c」に変換してから「時計回りに1シフト、合計3シフトでb"を"c"に変換します。

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

  • aのサイズがbのサイズと同じでない場合は、
    • Falseを返す
  • kが0と同じで、aがbと同じでない場合、
    • Falseを返す
  • su:=0
  • 0からaのサイズの範囲のiについては、
    • v:=b[i]のASCII-a[i]のASCII
    • v> =0の場合、
      • su:=su + v
    • それ以外の場合、
      • su:=su + v + 26
    • su> kの場合、
      • Falseを返す
  • Trueを返す

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

class Solution:
   def solve(self, a, b, k):
      if len(a) != len(b):
         return False
      if k == 0 and a != b:
         return False
         su=0
         for i in range(len(a)):
            v = ord(b[i])- ord(a[i])
            if v>=0:
               su+=v
            else:
               su+=v+26
            if su>k:
               return False
         return True
ob = Solution()
print(ob.solve("abc", "ccc", 3))

入力

"abc", "ccc", 3

出力

True

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

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

  2. 文字列をPythonでfloatに変換できるかどうかを確認するにはどうすればよいですか?

    文字列を解析してfloatするには、次を使用できます。 try:     print float('112.15') except ValueError:     print 'Cannot parse' これにより、出力が得られます: 112.15 文字列を解析できない場合は、値エラーがスローされます。 指定した文字列のブール値を返すラッパーメソッドを作成できます。たとえば、 def isfloat(value):   try:     float(value)   &nbs