Tags

  • AWS (7)
  • Apigee (3)
  • ArchLinux (5)
  • Array (6)
  • Backtracking (6)
  • BinarySearch (6)
  • C++ (19)
  • CI&CD (3)
  • Calculus (2)
  • DesignPattern (43)
  • DisasterRecovery (1)
  • Docker (8)
  • DynamicProgramming (20)
  • FileSystem (11)
  • Frontend (2)
  • FunctionalProgramming (1)
  • GCP (1)
  • Gentoo (6)
  • Git (15)
  • Golang (1)
  • Graph (10)
  • GraphQL (1)
  • Hardware (1)
  • Hash (1)
  • Kafka (1)
  • LinkedList (13)
  • Linux (27)
  • Lodash (2)
  • MacOS (3)
  • Makefile (1)
  • Map (5)
  • MathHistory (1)
  • MySQL (21)
  • Neovim (10)
  • Network (66)
  • Nginx (6)
  • Node.js (33)
  • OpenGL (6)
  • PriorityQueue (1)
  • ProgrammingLanguage (9)
  • Python (10)
  • RealAnalysis (20)
  • Recursion (3)
  • Redis (1)
  • RegularExpression (1)
  • Ruby (19)
  • SQLite (1)
  • Sentry (3)
  • Set (4)
  • Shell (3)
  • SoftwareEngineering (12)
  • Sorting (2)
  • Stack (4)
  • String (2)
  • SystemDesign (13)
  • Terraform (2)
  • Tree (24)
  • Trie (2)
  • TwoPointers (16)
  • TypeScript (3)
  • Ubuntu (4)
  • Home

    [LeetCode 14] Longest Common Prefix

    Published Nov 29, 2021 [  TwoPointers  ]

    Problem

    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 lower-case English letters.
    

    Typescript

    function longestCommonPrefix(strs: string[]): string {
        // if the strs is less than 1, return the first
        if(strs.length <= 1) return strs[0];
    
        // let's assume the first as the prefix, and start from the beginning
        for(let i = 0; i < strs[0].length; i++) {
            // we compare each character in first str to the rest
            for(let j = 1; j < strs.length; j++) {
                // return if we are at the end of the string or they don't match
                if(i === strs[j].length || strs[0][i] !== strs[j][i]) {
                    return strs[0].substring(0, i)
                }
            }
        }
    
        // if all are the same
        return strs[0];
    };
    

    Reference