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

PythonでHexspeak


10進数を最初に大文字の16進文字列に変換し、その後、出現するすべての数字0を文字Oに置き換えて、10進数をHexspeak表現に変換できるとします。 1と文字I。

この種の表現は、セット{"A"、 "B"、 "C"、 "D"、 "E"、 "F"、 "I"、"O"の文字のみで構成されている場合にのみ有効です。 "}。

したがって、10進整数Nを表す文字列numがあります。正しい場合は、NのHexspeak表現を見つける必要があります。そうでない場合は、「ERROR」を返します。したがって、num =“ 257”の場合、257は16進数で101であるため、出力は“ IOI”になります。

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

  • x:=数字の16進形式
  • ans:=空の文字列
  • 1つの辞書を作成し、数字を入力します(10:'A'、11:'B'、12:'C'、13:'D'、14:'E'、15:'F'、1: 'I'、0:'O')
  • xの各文字iについて−
    • iがdの場合、ans:=ans + d [i]、それ以外の場合は「ERROR」を返します
  • 回答を返す

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

class Solution(object):
   def convertToHex(self, n):
      res = []
      while n > 0:
         res.append(n % 16)
         n //= 16
      return res[::-1]
   def toHexspeak(self, num):
      x = self.convertToHex(int(num))
      ans = ""
      d = {10:"A", 11:"B", 12:"C", 13:"D", 14:"E", 15:"F",0:"O",1:"I"}
      for i in x:
         if i in d:
            ans += d[i]
         else:
            return "ERROR"
      return ans
ob1 = Solution()
print(ob1.toHexspeak("659724"))

入力

"659724"

出力

"AIIOC"

  1. Pythonで文字を繰り返さない最長の部分文字列

    文字列があるとします。文字を繰り返さずに最長の部分文字列を見つける必要があります。したがって、文字列が「ABCABCBB」のような場合、長さ3の繰り返しの部分文字列があるため、結果は3になります。これが「ABC」です。 これを解決するために、次の手順に従います set i:=0、j:=0、情報を保存するために1つのマップを設定します ans:=0 whilej<文字列の長さs map [s [j]]の場合、 ans:=max(ans、j – i + 1) map [s [j]]:=j それ以外の場合 i:=map [s [j]] + 1 ans:=max(ans、

  2. PythonのSqrt(x)

    数xがあり、xが非負数であるとします。ライブラリ関数を使用せずに、xの平方根を見つける必要があります。したがって、sqrt(x)を評価するための独自の関数を作成する必要があります。この関数では、出力の10進数が切り捨てられます。 xの値が4であるとすると、xが8の場合、結果は2になり、sqrt(8)は2.82842であるため、結果も2になります。ただし、整数部分のみを取り上げます。 これを解決するには、次の手順に従います- l =1、h =x + 1、回答=0を初期化します lの間、do mid =(h + l)/ 2 mid * mid <=xの場合、l:=mid + 1、