158. Read N Characters Given Read4 II - Call multiple times

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 theread4API, implement the functionint read(char *buf, int n)that readsncharacters from the file.

Note:
Thereadfunction may be called multiple times.

/* The read4 API is defined in the parent class Reader4.
      int read4(char[] buf); */

public class Solution extends Reader4 {
    /**
     * @param buf Destination buffer
     * @param n   Maximum number of characters to read
     * @return    The number of characters read
     */
    int buffIndex = 0;
    int buffCount = 0;
    char[] buff = new char[4];
    public int read(char[] buf, int n) {
        int index = 0;

        while (index < n){
            if (buffIndex == 0){
                buffCount = read4(buff);    
            }

            if (buffCount == 0) break;

            while (index < n && buffIndex < buffCount){
                buf[index++] = buff[buffIndex++];
            }
            if (buffIndex >= buffCount) buffIndex = 0;
        }

        return index;
    }
}

results for ""

    No results matching ""