【LeetCode】157. Read N Characters Given Read4

Difficulty: Easy

 More:【目錄】LeetCode Java實現html

Description

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.java

Intuition

題意:int read4(char[] buffer):該函數功能是讀取某個文件,每次讀取最多4個字符到buffer中,同時返回讀取字符個數。要求利用read4()函數來實現read(char[] buf, int n)函數,總共讀取n個字符到buf中。數組

要求很容易實現,每次用read4()來讀取字符,用System.arraycopy(src, srcPos, dest, destPos, length)來複制數組便可。關鍵要注意的是文件的字符數小於n或者大於n的狀況。函數

Solution

	public int read(char[] buf,int n) {
		char[] buffer = new char[4];
		int index=0;
		boolean endOfFile=false;
		while(index<n && !endOfFile) {
			int size=read4(buffer);
			if(size<4)
				endOfFile=true;
			int bytes=Math.min(size, n-index);
			System.arraycopy(buffer, 0, buf, index, bytes);
			index+=bytes;
		}
		return index;
	}

  

Complexity

Time complexity : O(n)post

Space complexity :  O(1)ui

What I've learned

1.htm

 

 More:【目錄】LeetCode Java實現blog

相關文章
相關標籤/搜索