java日記2018-04-25

昨天早上電面了愛奇藝的開發(fā)測試,我覺得愛奇藝不重視技術(shù),愛奇藝的覺得我業(yè)務(wù)不太一致,互相應(yīng)付草草了事。

事后想想這樣不太好,做事還是要認認真真,不能隨意應(yīng)付。


第三題:

在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù),判斷數(shù)組中是否含有該整數(shù)。

Consider the following matrix:

[

? [1,? 4,? 7, 11, 15],

? [2,? 5,? 8, 12, 19],

? [3,? 6,? 9, 16, 22],

? [10, 13, 14, 17, 24],

? [18, 21, 23, 26, 30]

]

Given target = 5, return true.

Given target = 20, return false.

解題思路是從右上角開始查找,以target16為例子,差右上角是15,如果比當前數(shù)據(jù)小,往下一行查找,19,回退一列找到12,16比12大,那么繼續(xù)往下一行找到了16,中間發(fā)現(xiàn)測試數(shù)據(jù)沒找到,對比后發(fā)現(xiàn)居然是數(shù)據(jù)源寫錯了,回想昨天調(diào)試腳本,查了半天發(fā)現(xiàn)測試床不對,修改后依然不通,傻眼的時候發(fā)現(xiàn)測試床打開了兩個,修改成另一個測試床了,所以bug會以你想不到的事情存在……


package com.lyc.dataautest;

public class Findint {

public static boolean find(int target,int[][] arr) {

if(arr == null || arr.length == 0 || arr[0].length == 0) return false;

int r= 0;

int c = arr[0].length-1;

while(r<=arr.length-1 && c >=0) {

System.out.println("r is:"+r);

System.out.println("c is:"+c);

System.out.println("arr is:"+arr[r][c]);

if(target == arr[r][c]) {

System.out.println("target is:"+arr[r][c]);

return true;

}

else if(target>arr[r][c]) {

r++;

}

else {

c--;

}

}

return false;

}

public static void main(String[] args) {

int[][] arr = {{1,4,7,11,15},{2,5,8,12,19},{3,6,9,16,22},{10,13,14,17,24}};

System.out.println("target is2:"+arr.length);

find(16,arr);

}

}



第四題

請實現(xiàn)一個函數(shù),將一個字符串中的空格替換成“%20”。例如,當字符串為 We Are Happy. 則經(jīng)過替換之后的字符串為 We%20Are%20Happy。

思路:?

在字符串尾部填充任意字符,使得字符串的長度等于字符串替換之后的長度。因為一個空格要替換成三個字符(%20),因此當遍歷到一個空格時,需要在尾部填充兩個任意字符。比如cc,即 we are happy變成we are happycccc

令 P1 指向字符串原來的末尾位置,P2 指向字符串現(xiàn)在的末尾位置。P1 和 P2 從后向前遍歷,如果P1指向的不是空格,那么P2指向就填充成P1指向的值;當 P1 遍歷到一個空格時,就需要令 P2 指向的位置依次填充 02%(注意是逆序的);

具體變化如下:

we are happy

we are happycccc

P1指向非空格,此時填充字符

we are happyappy

遇到空格P2指向分別填充02%()注意是逆序的)

we are h%20happy --此時P1指向空格,P2指向%,繼續(xù)

we areare%20happy--繼續(xù)填充

we%20are%20happy

具體實現(xiàn)上注意有個Stringbuffer與String的區(qū)別,查看資料如下,顯然解釋的不夠清楚,百度不行啊,明天廠里google查一下:

(1) String類?

該類一旦產(chǎn)生一個字符串,其對象就不可變。String類的內(nèi)容和長度是固定的。如果程序需要獲得字符串的信息需要調(diào)用系統(tǒng)提供的各種字符串操作方法實現(xiàn)。雖然通過各種系統(tǒng)方法可以對字符串施加操作,但這并不改變對象實例本身,而是生成一個新的實例。系統(tǒng)為String類對象分配內(nèi)存,是按照對象所包含的實際字符數(shù)分配的。

(2) StringBuffer類?

查了查Buffer這個詞,有緩沖的意思,這個類肯定有緩沖的功能。該類處理可變的字符串。如果要修改一個StringBuffer類的字符串,不需要再創(chuàng)建新的字符串對象,而是直接操作原來的串。該類的各種字符串操作方法與String類提供的方法不相同。系統(tǒng)為StringBuffer類分配內(nèi)存時,除去當前字符所占的空間外,還提供另外的16個字符大小的緩沖區(qū)。每個StringBuffer對象都有一定的緩沖區(qū)容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增加容量。



public static String replace(StringBuffer str) {int oldindex = str.length()-1;for(int i=0;i=0 && newindex>=oldindex) {

char c = str.charAt(oldindex--);

if(c==' ') {

str.setCharAt(newindex--, '0');

? ? ? ? ? ? str.setCharAt(newindex--, '2');

? ? ? ? ? ? str.setCharAt(newindex--, '%');

} else {

str.setCharAt(newindex--, c);

}

}

System.out.println("value is:"+str.toString());

return str.toString();

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,853評論 18 399
  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔...
    葉總韓閱讀 5,229評論 0 41
  • Java經(jīng)典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 2,086評論 0 2
  • 婆婆去按摩館刺血,說要記我媽賬上。其實都是一家人,何必分太清,不管誰會開心誰會不開心,都是我在中間可以周旋的事。然...
    小花掌門閱讀 774評論 0 0
  • 曾經(jīng)看過一檔外國家庭教育的節(jié)目,明白了好多!節(jié)目中的媽媽有著跟我一樣的煩躁,孩子的所有事情大包大攬,爸爸完全是...
    穿過你的眼眸我的美閱讀 535評論 0 1

友情鏈接更多精彩內(nèi)容