/** * The read4 API is defined in the parent class Reader4. * int read4(char *buf4); */classSolution{public:/** * @param buf Destination buffer * @param n Number of characters to read * @return The number of actual characters read */intread(char*buf,intn){inti=0;// buf's indexwhile(i<n){if(i4==n4){// All characters in buf4 are consumedi4=0;// Reset buf4's indexn4=read4(buf4);// Read 4 (or less) chars from file to buf4if(n4==0)// Reach the EOFreturni;}buf[i++]=buf4[i4++];}returni;}private:char*buf4=newchar[4];inti4=0;// buf4's indexintn4=0;// buf4's size};
/** * The read4 API is defined in the parent class Reader4. * int read4(char[] buf4); */publicclassSolutionextendsReader4{/** * @param buf Destination buffer * @param n Number of characters to read * @return The number of actual characters read */publicintread(char[]buf,intn){inti=0;// buf's indexwhile(i<n){if(i4==n4){// All characters in buf4 are consumedi4=0;// Reset buf4's indexn4=read4(buf4);// Read 4 (or less) chars from file to buf4if(n4==0)// Reach the EOFreturni;}buf[i++]=buf4[i4++];}returni;}privatechar[]buf4=newchar[4];privateinti4=0;// buf4's indexprivateintn4=0;// buf4's size}
# The read4 API is already defined for you.# Def read4(buf4: List[str]) -> int:classSolution:defread(self,buf:List[str],n:int)->int:i=0# buf's indexwhilei<n:ifself.i4==self.n4:# All characters in buf4 are consumedself.i4=0# Reset buf4's indexself.n4=read4(self.buf4)# Read 4 (or less) chars from file to buf4ifself.n4==0:# Reach the EOFreturnibuf[i]=self.buf4[self.i4]i+=1self.i4+=1returnibuf4=[' ']*4i4=0# buf4's indexn4=0# buf4's size