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

Pythonで再フォーマットされた電話番号を見つけるプログラム


文字列として電話番号があるとします。電話番号は、数字、スペース、ダッシュ「-」で構成されます。電話番号を一定の方法で再フォーマットしたい。いくつかのルールがあります-

  • 最初にすべてのスペースとダッシュを削除します

  • 残りの桁数が4以下になるまで、左側から右側の桁を長さ3のブロックにグループ化します。

  • 最後の数字は、-

    のようにグループ化されます。
    • 2桁の場合:長さ2の単一ブロック。

    • 3桁の場合:長さ3の単一ブロック。

    • 4桁の場合:それぞれ長さ2のブロックがさらに2つあります。

次に、これらのブロックはダッシュでクラブされます。再フォーマットされた電話番号を見つける必要があります。

したがって、入力がs ="9-6-84102-4 7-8"の場合、出力は「968-410-24-78」になります

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

  • 数字:=空白の文字列

  • blk:=空白の文字列

  • sの各文字iについて、実行します

    • iが数値の場合、

      • blk:=blk concatenate i

    • blkのサイズが3と同じ場合、

      • 数字:=数字連結blk連結dash( "-")

      • blk:=空白の文字列

  • blkのサイズが0と同じ場合、

    • インデックス0から数字のサイズ-1までの数字の部分文字列を返します]

  • それ以外の場合、blkのサイズが1と同じ場合、

    • インデックス0から数字のサイズまでの数字のサブストリングを返します-2]連結dash( "-")数字の最後から2番目の文字を連結blkを連結

  • それ以外の場合、blkのサイズが2と同じ場合、

    • 戻り桁はblkを連結します

例(Python)

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

def solve(s):
   digits = ""
   blk = ""
   for i in s:
      if i.isnumeric():
         blk += i
      if len(blk) == 3:
         digits += blk+"-"
         blk = ""

   if len(blk) == 0:
      return digits[:-1]
   elif len(blk) == 1:
      return digits[:-2]+"-"+digits[-2]+blk
   elif len(blk) == 2:
      return digits+blk

s = "9-6-84102-4 7-8"
print(solve(s))

入力

"9-6-84102-4 7-8"

出力

968-410-24-78

  1. Pythonで範囲内のノード数を見つけるプログラム

    BSTがあり、左と右の境界lとrもあるとすると、lとrの間に値が存在するルート内のすべてのノードの数を見つける必要があります。 したがって、入力が次のような場合 l =7、r =13の場合、8、10、12の3つのノードがあるため、出力は3になります。 これを解決するために、次の手順に従います- スタック:=スタックと最初にルートを挿入し、カウント:=0 スタックが空でないときに、実行します node:=スタックの最上位要素、およびポップ要素 ノードがnullでない場合、 l<=ノードのデータ<=rの場合、 count:=count + 1

  2. Pythonでの電話番号の文字の組み合わせ

    2〜9の数字を含む文字列があるとします。数字が表す可能性のあるすべての文字の組み合わせを返す必要があります。数字から文字への1つのマッピング(電話ボタンの場合と同様)を以下に示します。 1はどの文字にもマップされないことに注意してください。 1 2 a b c 3 d e f 4 g h i 5 j k l 6 m n o 7 p q r s 8 t u v 9 w x y z * 0 # たとえば、指定された文字列が「23」の場合、可能な文字列は[「ad」、「ae」、「af」、「bd」、「