1. 程式人生 > >[C語言] leetCode 簡單篇之14題

[C語言] leetCode 簡單篇之14題

題目
編寫一個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 “”。

示例 1:

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

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

所有輸入只包含小寫字母 a-z 。
結束

思路
在字串陣列長度大於1時,拿首個字串與其他字串逐個字元比較,當字元出現不同時,在當前位置結束該字串(添‘\0’).
最終首個字串剩下的就是公共字首。將之返回。

實現

char* longestCommonPrefix(char** strs, int strsSize)
{
    if(strsSize == 0) return "";//當陣列長度為0,即不存在公共字首
    if(strsSize == 1) return strs[0];//當陣列長度為1,第一個字串就是公共字首。沒有其他與之比較。
    int i;
    int in ;
    
    for( i=1; i<strsSize; i++)//遍歷除首個字串外的其他字串
    {
        for( in=0; in<strlen(strs[0]);in++)//遍歷每個字串的字元,長度以首個字串長度為標準
        {
            if( strs[0][in] != strs[i][in])//如果不相同就在該位置結束字串
            {
                strs[0][in]='\0';
                break;//再比較這兩個字串後面的字元就沒有意義了,因此跳出
            }
        }
    }
    
    return strs[0];
}