每日刷題 用 Read4 讀取 N 個字元

2021-09-29 02:29:11 字數 1698 閱讀 1689

給你乙個檔案,並且該檔案只能通過給定的 read4 方法來讀取,請實現乙個方法使其能夠讀取 n 個字元。

read4 方法:

api read4 可以從檔案中讀取 4 個連續的字元,並且將它們寫入快取陣列 buf 中。

返回值為實際讀取的字元個數。

注意 read4() 自身擁有檔案指標,很類似於 c 語言中的 file *fp 。

read4 的定義:

引數型別: char buf

返回型別: int

注意: buf 是目標快取區不是源快取區,read4 的返回結果將會複製到 buf 當中。

下列是一些使用 read4 的例子:

file file(「abcdefghijk」); // 檔名為 「abcdefghijk」, 初始檔案指標 (fp) 指向 『a』

char buf = new char[4]; // 建立乙個快取區使其能容納足夠的字元

read4(buf); // read4 返回 4。現在 buf = 「abcd」,fp 指向 『e』

read4(buf); // read4 返回 4。現在 buf = 「efgh」,fp 指向 『i』

read4(buf); // read4 返回 3。現在 buf = 「ijk」,fp 指向檔案末尾

read 方法:

通過使用 read4 方法,實現 read 方法。該方法可以從檔案中讀取 n 個字元並將其儲存到快取陣列 buf 中。您 不能 直接操作檔案。

返回值為實際讀取的字元。

read 的定義:

引數型別: char buf, int n

返回型別: int

注意: buf 是目標快取區不是源快取區,你需要將結果寫入 buf 中。

示例:

例 1:

輸入: file = 「abc」, n = 4

輸出: 3

解釋: 當執行你的 rand 方法後,buf 需要包含 「abc」。 檔案一共 3 個字元,因此返回 3。 注意 「abc」 是檔案的內容,不是 buf 的內容,buf 是你需要寫入結果的目標快取區。

例 2:

輸入: file = 「abcde」, n = 5

輸出: 5

解釋: 當執行你的 rand 方法後,buf 需要包含 「abcde」。檔案共 5 個字元,因此返回 5。

示例 3:

輸入: file = 「abcdabcd1234」, n = 12

輸出: 12

解釋: 當執行你的 rand 方法後,buf 需要包含 「abcdabcd1234」。檔案一共 12 個字元,因此返回 12。

示例 4:

輸入: file = 「leetcode」, n = 5

輸出: 5

解釋: 當執行你的 rand 方法後,buf 需要包含 「leetc」。檔案中一共 5 個字元,因此返回 5。

這道題難就難在讀不懂題目。。。

// forward declaration of the read4 api.

intread4

(char

*buf)

;class

solution

};

157 用 Read4 讀取 N 個字元

題目描述 給你乙個檔案,並且該檔案只能通過給定的 read4 方法來讀取,請實現乙個方法使其能夠讀取 n 個字元。read4 方法 api read4 可以從檔案中讀取 4 個連續的字元,並且將它們寫入快取陣列 buf 中。返回值為實際讀取的字元個數。注意 read4 自身擁有檔案指標,很類似於 c...

每日刷題 N皇后

n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。皇后的攻擊範圍為 自己所在的一行 自己所在的一列 以及自己所在的兩個對角線上。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回所有不同的 n 皇后問題的解決方案。每一種解法包含乙個明確的 n 皇后問...

每日刷題 N皇后II

n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。皇后的攻擊範圍為 自己所在的一行 自己所在的一列 以及自己所在的兩個對角線上。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回 n 皇后不同的解決方案的數量。示例 輸入 4 輸出 2 解釋 4 皇后...