天天看點

【leetCode】14.最長公共字首

LeetCode : 題目描述:

編寫一個函數來查找字元串數組中的最長公共字首。

如果不存在公共字首,傳回空字元串 ""。

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共字首。
說明:

所有輸入隻包含小寫字母 a-z 。
           

我的答案,這次沒看 題解,竟然寫出來了,開心。

class Solution {
    public String longestCommonPrefix(String[] strs) {
       StringBuilder sb = new StringBuilder();
		int len = strs.length;
		if(len == 0){
			return "";
		}
		int minLen = strs[0].length();
		boolean flag_1 = true;
		char c = 'a';
		for(int i = 0; i < len; i++){
			minLen = strs[i].length() < minLen? strs[i].length() : minLen;
		}
		for(int i = 0; i < minLen; i++){	
			for(int j = 0; j < len-1; j++){
				if(strs[j].charAt(i) != strs[j+1].charAt(i)){
						flag_1 = false;
						break;
				}
				c = strs[j].charAt(i);
			}
			if(flag_1){
				sb.append(c);
			}
		}
		if(sb.length() == 0){
			return "";
		}else{
			return sb.toString();
		}
    }
}
           

其中,需要注意的是,第一次用 int minLen = strs[0].length(); 寫了 Integer.MAX_VALUE,當時寫的時候就有點擔心,沒想到送出直接 溢出了。後來寫 int minLen = strs[0].length();  送出發現 測試有個 “” 空參數,直接報了 越位。 最後加了個空數組判斷,終于過了。 以後改動代碼,一定要小心謹慎、

另外,使用了 flag 開關,我覺得寫得很爛,但是暫時這樣了,以後變成大神了再來刷。

評級:

【leetCode】14.最長公共字首

未完待續。。。

0.0.1