Leetcode 157: Read N Characters Given Read4

157. Read N Characters Given Read4

  • Total Accepted: 19570
  • Total Submissions: 66588
  • Difficulty: Easy
  • Contributors: Admin

The API: int read4(char *buf) reads 4 characters at a time from a file.

The return value is the actual number of characters read. For example, it returns 3 if there is only 3 characters left in the file.

By using the read4 API, implement the function int read(char *buf, int n) that reads n characters from the file.

Note:
The read function will only be called once for each test case.

 

Code

# The read4 API is already defined for you.
# @param buf, a list of characters
# @return an integer
# def read4(buf):

class Solution(object):
    def read(self, buf, n):
        """
        :type buf: Destination buffer (List[str])
        :type n: Maximum number of characters to read (int)
        :rtype: The number of characters read (int)
        """
        idx = 0

        while True:
            if idx == n:
                return idx 

            buf4 = [0]*4
            read4_ret = read4(buf4)
            for i in xrange(read4_ret):
                if idx < n:
                    buf[idx] = buf4[i]
                    idx += 1
                else:
                    return idx

            if read4_ret < 4:
                return idx

 

Idea

You read contents into buf. You should create a small buffer buf4 to save contents from read4. Then, based on how many characters you have read, determine when to return.

Leave a comment

Your email address will not be published. Required fields are marked *