package com.fishercoder.solutions;

/**
 * 157. Read N Characters Given Read4
 *
 * 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.
 *
 * Example 1:
 *
 * Input: buf = "abc", n = 4
 * Output: "abc"
 * Explanation: The actual number of characters read is 3, which is "abc".
 *
 * Example 2:
 *
 * Input: buf = "abcde", n = 5
 * Output: "abcde"
 *
 * Note:
 * The read function will only be called once for each test case.
 *
 */
public class _157 {
    public static class Solution1 {
        public int read(char[] buf, int n) {
            int index = 0;
            int next = 0;
            char[] buffer = new char[4];
            while (index < n && (next = read4(buffer)) != 0) {
                for (int i = 0; i < next && index < n; index++, i++) {
                    buf[index] = buffer[i];
                }
            }
            return index;
        }

        private int read4(char[] buffer) {
            //this is a fake method to make Eclipse happy
            return 0;
        }
    }
}

@@ -33,681 +33,8 @@
 s;%0A%0A
-/**%0A * 157. Read N Characters Given Read4%0A *%0A * The API: int read4(char *buf) reads 4 characters at a time from a file.%0A *%0A * 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.%0A *%0A * By using the read4 API, implement the function int read(char *buf, int n) that reads n characters from the file.%0A *%0A * Example 1:%0A *%0A * Input: buf = %22abc%22, n = 4%0A * Output: %22abc%22%0A * Explanation: The actual number of characters read is 3, which is %22abc%22.%0A *%0A * Example 2:%0A *%0A * Input: buf = %22abcde%22, n = 5%0A * Output: %22abcde%22%0A *%0A * Note:%0A * The read function will only be called once for each test case.%0A *%0A */%0A
 publ
@@ -542,12 +542,13 @@
 s a 
-fake
+dummy
  met
@@ -563,21 +563,18 @@
 ake 
-Eclipse happy
+it compile
 %0A   

refactor 157