力扣-----求最長的公共前綴

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-common-prefix
 

編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""。

示例 1:

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

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

 

char * longestCommonPrefix(char ** strs, int strsSize){
    //printf("strsSize:%d\n",strsSize);
    if(strsSize == 0){
        return "";
    }

    int i = 0,j = 0,len = 0,flag = 0;
    int min_len = strlen(strs[0]);
    char *tmp_str = strs[0];
	char map[100] = {0};
	memset(map,0,100);
	
    for(i = 1;i < strsSize ;i++){
        if(min_len > strlen(strs[i])){
            min_len = strlen(strs[i]);
            tmp_str = strs[i];
        }
    }

    //printf("min_len:%d tmp_str:%s\n",min_len,tmp_str);

    char *buf = (char*)malloc(min_len + 1);
    if(!buf){
       return NULL;
    }
    memset(buf,0,min_len + 1);
	
	for(i = 0;i < min_len;i++){
		char ch = tmp_str[i];
		
		for(j = 0;j < strsSize;j++){
			if(ch == strs[j][i]){
				flag++;
			}else{
                break;
            }
		}
		
		if(flag == strsSize){
			buf[len++] = ch;
			flag = 0;
		}
		else{
			break;
		}
			
	}
    return buf;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章