1. 程式人生 > 其它 >LeetCode 14.最長公共字首

LeetCode 14.最長公共字首

技術標籤:LeetCodeleetcode

LeetCode 14.最長公共字首

題目

編寫一個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 “”。

CCCCC~

思路分析

  1. 先判斷是否為空,如果是空指標,那麼就可以直接返回空
  2. 判斷如果只有一個內容時,就直接返回
  3. 確定需要查詢的東西——公共字首。意味著只要後面就不同的內容,就可以不需要繼續進行判斷了
  4. 先判斷前兩個的公共字首
  5. 再依據已經得到的字首,進行繼續迴圈判斷

程式碼實現

char * longestCommonPrefix(char ** strs, int strsSize){
    //空時直接輸出空指標
    if(strsSize==0){
        return "";
    }
    //只有一個時直接輸出
    if(strsSize==1)
    {
        return strs[0];
    }
    //先判斷前兩個的公共字首,因為需要判斷的是字首,所以如果不同,就可以直接結束
	char* common=(char*)malloc(200*sizeof(char));
	for(int i=0;;i++){
        //先判斷是否結束
        if(strs[0][i]=='\0' || strs[1][i]=='\0'){
            common[i]='\0';
            break;
        }
		if(strs[0][i]==strs[1][i]){
			common[i]=strs[0][i];
			common[i+1]='\0';
		}
		else{
			common[i]='\0';
			break;
		}
	}
    //再與後面的進行逐個判斷
	for(int i=2;i<strsSize;i++){
        //檢測公共部分和當前字串若一方為空則直接返回空指標
		if(common[0]=='\0' || strs[i][0]=='\0'){
			return "";    
		}
		for(int j=0;strs[i][j]!='\0' || common[j]!='\0';j++){
			if(strs[i][j]!=common[j]){
                // 插入結束
                common[j]='\0';
				break;
			}
		}
	}
	return common;
}

結果分析

大家知道我的水平,也就這樣咯
結果

進階版

嘿嘿嘿