Pythonの157でLeetCodeはN文字READ4を読みます

あなたのファイルを付けて、ファイルには、与えられたREAD4方法で読み取ることができ、n文字を読むためにそれを有効にする方法を実装します。

READ4方法:

APIのREAD4はファイルから連続する4つの文字を読み、キャッシュアレイBUFに書き込むことができます。

戻り値は実際に読んで文字の数です。

それ自体はC言語のFILE * fpのに非常によく似たファイルポインタを、持っている()READ4注意してください。

READ4定義:

パラメータタイプ:[] BUFのchar型
の戻り値の型を:int型

注:BUF []は宛先バッファ・キャッシュの源ではない、返さREAD4結果は[]、それらのBUFにコピーされます。
次はREAD4の使用のいくつかの例です:

ファイルのファイル(「ABCDEFGHIJK」); // ファイル名「ABCDEFGHIJK」、最初のファイルポインタ(FP)指し「」
のchar [] =新しい新しいチャーBUFの[4]、それは十分に受けることができるように、//バッファを作成します文字
READ4(BUF); // 4を返しますREAD4。今、 'E'に= "ABCD"、FPポイントをbufを
READ4(BUF); //はREAD4 4を返します。今、 '私は'に= "EFGH"、FPポイントbufを
READ4 3を返す//;(BUF)READ4を。今bufを=「IJK」、FPのポイントは、ファイルの最後に
読ん方法:

READ4方法を使用することにより、読み取り方法を実現しています。この方法は、キャッシュ・アレイ・bufにそれを読むのn文書から文字を格納することができます。あなたは、ファイルを直接操作することはできません。

戻り値は実際に読んで文字です。

定義をお読みください。

パラメータタイプ:[] BUFをCHAR、INT N
型返す:INTを

注意:bufが[]宛先バッファ・キャッシュの源ではない、あなたは[]でBUFに結果を記述する必要があります。
 

例1:

入力:ファイル= "ABC"、N = 4
出力:3
説明:あなたはランドメソッドを実行し、 "ABC"を含める必要がありBUF。3を返し、3つの文字の合計ファイル。「ABC」は、bufはあなたが宛先バッファの結果を記述する必要があること、ファイルの内容ではなく、BUFの内容であることに注意してください。
例2:

入力:ファイル= "ABCDE"、N = 5つ
の出力:5
説明:あなたはランドメソッドを実行し、 "ABCDE"を含める必要がありBUF。5つの文字の合計ファイルなので、5が返されます。
例3:

入力:ファイル= "abcdABCD1234"、N = 12
出力:12
説明:あなたはランドメソッドを実行し、 "abcdABCD1234"を含める必要がありBUF。12文字の合計ファイルなので、12を返します。
例4:

入力:ファイル= "leetcode"、N = 5つ
の出力:5
説明:あなたはランドメソッドを実行し、 "leetc"を含める必要がありBUF。5つの文字の合計ファイルなので、5が返されます。
 

注意:

あなたは、直接ファイルを読み取り専用にすることができ、ファイルを操作することはできませんが、READ4を介して取得することはできません。
読み込み機能をテストケースごとに一度だけ呼ばれます。
あなたは、ターゲットバッファ配列が十分なn個の文字を保存するのに十分なスペースがあることを確認BUFと仮定することができます。 

 

分析:

このトピックでは、読みの文字数を返し、それぞれが4つの文字(4が存在する場合)、ない4を読んで、短期では、APIのREAD4を持って、質問を理解することは少し難しいです。後二回READ4呼ば例えばS =「ABC」のため、最初の呼び出しが終了した後、0秒を返し、[「A」、「B」、「C」]と同じbufは、それが問題を解決するためのものですキー。すべてのレコードを読み取る可変の開始位置から始めて、文字の最終的な数は、実際に読まれています。

「」「
READ4 APIは、すでにあなたのために定義されています。

    @param bufが、文字のリストは、
    整数@return 
    デフREAD4(BUF): 
以下は、#はREAD4 APIを呼び出すことができる方法の例である
ファイルは=ファイル(」ABCDEFGHIJK ABCDEFGHIJK "最初は''へのポインタ(FP)のポイントをファイル「)#ファイルがある" 
文字を格納するために十分なスペースとバッファー* 4位作成BUF = [」「] 
READ4(BUF)#READ4 [4.今すぐ= bufを返します。 'A'、 'B'、 'C'、 'D']、 'E'にFP点
READ4(BUF)次に= bufを4を返しREAD4#[ 'E'、 'F'、 'G'、「H ']、FPにポイント'i'は
戻りREAD4 READ4(BUF)#3すぐBUF = [' i」は、 'J'、K 'を'、...]、ファイルの最後にFPのポイント
「」「
クラスのソリューション(オブジェクト):
    デフ(自己、BUF、n個)をお読みください。
        『』」
        :タイプBUF:送信先のバッファ(一覧[STR])
        :N-型:文字の数(int)を読むために
        :RTYPE:実際の文字読み取り(int型)の数の
        ""」
        。TEMP、[スタート] = [ ''] * 4、 0 
        CUR = READ4(TEMP)
        一方スタート<N-とCUR: 直接拡張または+ない
            BUFを[スタート:スタート+ CUR] = TEMPの[:CUR] 
            スタート+ = CUR 
            CUR = READ4(TEMP)
        #Nオーバー全長プレースホルダの後ろに多くがあるので''、(BUF)のbuf事実をlenはできません
        :N->起動した場合
            、リターンスタート
        #は続きを読む
        :のelif [スタート]> [N-を
            :逆転(レンジ(N-、[スタート]))でI用
                buf.pop (ⅰ)  
        nは返します

  

 

おすすめ

転載: www.cnblogs.com/lowkeysingsing/p/11349820.html