[leetCode]Easy — Longest Common Prefix 解題紀錄

Champion Hsieh
Firmware_Engineer
Published in
Jun 22, 2021

Question:

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

題目翻譯:

寫一個函數可以找到最長的共同字首字串在一個字串陣列當中。

如果他沒有共同字首,則回傳空字串。

Example 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Solution:

char * longestCommonPrefix(char ** strs, int strsSize){

char* substr = ' ';
int WhichChar = strlen(strs[0]);
for (int i = 0 ; i<strsSize ;i++){
if (substr == ' '){
substr = strs[i];
}
if (WhichChar > strcompare(substr, strs[i])){
WhichChar = strcompare(substr, strs[i]);
}
}
char* ans = (char*)malloc(sizeof(char)* WhichChar+1);
strncpy(ans, substr, WhichChar);
ans[WhichChar]='\0';
return ans;
}
int strcompare(char* str1, char* str2){
int N = 0;
for (int j=0; j<strlen(str2); j++){
if(str1[j] == str2[j]){
N++;
}else{
break;
}
}
return N;
}

Note:先建立比較用空字串substr以及字串共同字首的位置值WhichChar,利用for迴圈先將空字串放入陣列中第一個字串,並於迴圈的條件中去比較字串相同的字首位置值,這邊建立另一個function去做比較值,然後WhichChar會去與function回傳的比較值做比較,比較值較小就去取代他,最後建立return用的字串ans,並採用strncpy funtion去複製substr(第一字串)的字首個數WhichChar於字串ans,但strncpy最後不會主動加入字符串的結束標誌’\0',會造成字串有亂碼的結果,故自行手動加入,並回傳其值。

--

--