LeetCode 14. Longest Common Prefix


原题描述

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

算法

这个题有两种直接的算法:
1. “字符串间匹配(横向比较)”. 取第一个字符串和其他的字符串两两比较,得到两两比较中的最长公共前缀. 这一种算法不是最优的,可以假设只有最后一个字符串和其余的不同,那么之前的字符串比较都是在浪费时间,所以说不是最优的
2. “字符匹配(纵向匹配)”. 在所有字符串中从左到右进行匹配,一旦发现不匹配的就退出,这样可以大幅度减少比较的时间。

C++代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
    	if (strs.size() == 0) return "";
        string prefix = "";
        for (int idx = 0; idx < strs[0].length() ; prefix+=strs[0][idx] , idx++){
            for(int i=1; i<strs.size(); i++)
                if(idx >= strs[i].size() || (i > 0 && strs[i][idx] != strs[0][idx]))
                    return prefix;
        }
        return prefix;
    }
};

Bug Free Procedure 从记事本直接写代码

2016.12.13 Bingo!!!一次性AC



本作品由 Marvin.Cao 创作,采用 CC BY-NC-SA 3.0 许可协议 进行许可。

Comments