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

Pythonで文字列を書き込む行数


文字列Sがあり、その指定された文字列の文字を左から右に行に書き込む必要があるとします。ここで、各行の最大幅は100単位であり、文字を書き込むと行の幅が100単位を超える場合は、次の行に書き込まれます。配列の幅もあります。ここで、widths[0]は'a'の幅、widths[1]は'b'の幅などです。

2つの質問の答えを見つける必要があります-

  • Sの文字が少なくとも1つある行の数
  • そのような最後の行で使用される幅はどれくらいですか?

答えを長さ2の整数リストとして返します。

したがって、入力が[4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10、 10,10,10,10,10]およびS="bbbcccdddaaa"の場合、「a」を除くすべての文字の長さが同じ10であり、文字列「bbbcccdddaa」がカバーするため、出力は[2、4]になります。 9 * 10 + 2 * 4=98スペース。最後の「a」については、最初の行に2ユニットしか残っていないため、2行目に書き込まれます。したがって、答えは2行に加えて、2行目に4単位です。

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

  • 行:=1、カウント:=0
  • Sの各iについて、
    • count:=count + widths [ASCII of i --97]
    • カウント>100の場合、
      • line:=line + 1
      • count:=widths [ASCII of i --97]
  • return [line、count]

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

class Solution:
   def numberOfLines(self, widths, S):
      line = 1
      count = 0
      for i in S:
         count += widths[ord(str(i))-97]
      if count > 100:
         line += 1
      count = widths[ord(str(i))-97]
   return [line, count]
ob = Solution()
print(ob.numberOfLines([4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10], "bbbcccdddaaa"))

入力

[4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],"bbbcccdddaaa"

出力

[2, 4]

  1. Pythonを使用してテキストファイルに複数の行を書き込む方法は?

    書き込み関数を使用して、行を「\n」で区切ることにより複数の行を書き込むことができます。 例 line1 = "First line" line2 = "Second line" line3 = "Third line" with open('my_file.txt','w') as out:     out.write('{}\n{}\n{}\n'.format(line1,line2,line3)) または、writelines関数を使用してこれらの行を書き込む

  2. Pythonで長い行を折り返す方法は?

    長い行を折り返すための推奨される方法は、括弧、角かっこ、および中括弧内にPythonの暗黙の行継続を使用することです。必要に応じて、式の前後に括弧のペアを追加できますが、円記号を使用した方がよい場合もあります。続く行を適切にインデントしてください。二項演算子を回避するための好ましい場所は、演算子の前ではなく、演算子の後です。 括弧で囲まれた改行の例:  list(     "Hello"     ) これにより、出力が得られます: ['H', 'e','l', '