LeetCode 14.最長公共字首
阿新 • • 發佈:2021-01-30
LeetCode 14.最長公共字首
題目
編寫一個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 “”。
CCCCC~
思路分析
- 先判斷是否為空,如果是空指標,那麼就可以直接返回空
- 判斷如果只有一個內容時,就直接返回
- 確定需要查詢的東西——公共字首。意味著只要後面就不同的內容,就可以不需要繼續進行判斷了
- 先判斷前兩個的公共字首
- 再依據已經得到的字首,進行繼續迴圈判斷
程式碼實現
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; }
結果分析
大家知道我的水平,也就這樣咯
進階版
嘿嘿嘿