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 the read4 API, implement the function int read(char *buf, int n) that reads n characters from the file.

Note:
The read function may be called multiple times.

一刷
題解:與157不同的是,函數(shù)可以被多次調(diào)用夺克,比如read(buf, 1), 但是我們訪問read4,如果函數(shù)沒有結(jié)束狡门,一定讀得了4個(gè)char,但是只返回一個(gè)尝偎。
buffPtr: buffer pointer
buffCnt: buffer counter, 保存一次調(diào)用read4讀到的字符數(shù)目
直到buffPtr reach buffCnt的時(shí)候肤寝,置為0,準(zhǔn)備調(diào)用下一次read4

/* 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
     */
    
    private int buffPtr = 0;//buffPointer
    private int buffCnt = 0;//buffCounter
    private char[] buff = new char[4];
    
    
    public int read(char[] buf, int n) {
        int ptr = 0;
        while(ptr<n){
            if(buffPtr == 0){
                buffCnt = read4(buff);
            }
            if(buffCnt == 0) break;
            while(ptr<n && buffPtr < buffCnt){//if buffPtr reach the buffCnt, set to zero and ready
                buf[ptr] = buff[buffPtr];
                ptr++;
                buffPtr++;
            }
            if(buffPtr>=buffCnt) buffPtr = 0;
        }
        return ptr;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慷吊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子堰酿,更是在濱河造成了極大的恐慌,老刑警劉巖嗅榕,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吟逝,死亡現(xiàn)場離奇詭異块攒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)庞呕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔚鸥,你說我怎么就攤上這事株茶。” “怎么了僵闯?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵拙绊,是天一觀的道長榄攀。 經(jīng)常有香客問我檩赢,道長,這世上最難降的妖魔是什么军浆? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上晃财,老公的妹妹穿的比我還像新娘。我一直安慰自己钢猛,他們只是感情好命迈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布征椒。 她就那樣靜靜地躺著,像睡著了一般蒙秒。 火紅的嫁衣襯著肌膚如雪税肪。 梳的紋絲不亂的頭發(fā)上锻梳,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音国章,去河邊找鬼。 笑死四啰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匙赞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猛拴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跛溉,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤堪侯,失蹤者是張志新(化名)和其女友劉穎伍宦,沒想到半個(gè)月后关贵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年碍侦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了站玄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖齿尽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卡骂,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站崩掘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诵原。R本人自食惡果不足惜挽放,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一绍赛、第九天 我趴在偏房一處隱蔽的房頂上張望纯出。 院中可真熱鬧箩言,春花似錦、人聲如沸鸵赖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春饼煞,著一層夾襖步出監(jiān)牢的瞬間砖瞧,已是汗流浹背荣堰。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工振坚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渡八,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓窟勃,卻偏偏與公主長得像汁咏,于是被迫代替她去往敵國和親攘滩。 傳聞我的和親對象是個(gè)殘疾皇子帅刊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容