고양이와 코딩

[LeetCode] Longest Common Prefix 본문

C

[LeetCode] Longest Common Prefix

ovovvvvv 2024. 11. 12. 23:12
728x90
14. Longest Common Prefix
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.

 

Constraints:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] consists of only lowercase English letters.

 

solution

char* longestCommonPrefix(char** strs, int strsSize) {
    if(strsSize == 0) return "";

    char* prefix = strs[0];

    for(int i = 1; i < strsSize; i++) {
        int j = 0;

        while(prefix[j] && strs[i][j] && prefix[j] == strs[i][j]){
            j++;
        }

        prefix[j]= '\0';
    }
    return prefix;
}

prefix를 strs[0]으로 초기화 해서 공통 접두사의 기준으로 삼고, 나머지 문자열들과 비교

prefix[j] = '\0' 으로, 현재 j까지의 공통 부분만 남겨둬서 접두사를 줄여 나가는 방식. 

strs가 ["flower", "flow", "flight"]인 경우

prefix[4] = '\0';  // 이제 prefix는 {'f', 'l', 'o', 'w', '\0', 'r', '\0'}

 

그리고 "flow"와 "flight"를 동일한 방식으로 비교

'C' 카테고리의 다른 글

[LeetCode] Merge Two Sorted Lists  (0) 2024.11.24
[LeetCode] Valid Parentheses  (0) 2024.11.23
[LeetCode] Roman to Integer  (1) 2024.11.10
[LeetCode] Palindrom number  (0) 2024.11.10
[LeetCode] Two Sum  (0) 2024.11.10