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

<p>If there is no common prefix, return an empty string <code>&quot;&quot;</code>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> strs = [&quot;flower&quot;,&quot;flow&quot;,&quot;flight&quot;]
<strong>Output:</strong> &quot;fl&quot;
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> strs = [&quot;dog&quot;,&quot;racecar&quot;,&quot;car&quot;]
<strong>Output:</strong> &quot;&quot;
<strong>Explanation:</strong> There is no common prefix among the input strings.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= strs.length &lt;= 200</code></li>
	<li><code>0 &lt;= strs[i].length &lt;= 200</code></li>
	<li><code>strs[i]</code> consists of only lowercase English letters.</li>
</ul>

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        /*        
        //This finds the common series of alphabets between strings. But the question wants only prefix. so we need to remove first loop.
        string common = ""; 
        string common_guess = "";
        int n_strings = strs.size();
        int min_len = 100;
        int counter = 0;
        
        for(auto a: strs){
            if (a.length() < min_len){
                min_len = a.length();
                common_guess = a;  
            }
        }
        
        common = common_guess;

        for(int i = 0; i < min_len -1; i++){
            for(int j = min_len; j > i; j --){
                common = common_guess.substr(i, j);
                counter = 0;
                for(auto a: strs){
                    if (a.find_first_of(common_guess)==-1)
                        return "";
                    if (a.find(common) == -1)
                        break;
                    counter ++;
                    if (counter == n_strings)
                        return common;
                }
            }
        }*/
        
        //The following code is for prefix.
        
        string common = ""; 
        string common_guess = "";
        int n_strings = strs.size();
        int max_len = 0;
        int counter = 0;
        
        for(auto a: strs){
            if (a.length() > max_len){
                max_len = a.length();
                common_guess = a;  
            }
        }
        
        common = common_guess;
        
        for(int j = max_len; j > 0; j --){
            common = common_guess.substr(0, j);
            counter = 0;
            for(auto a: strs){
                if (a.find_first_of(common_guess)==-1)
                    return "";
                if (a.substr(0, j).find(common, 0) == -1)
                    break;
                counter ++;
                if (counter == n_strings)
                    return common;
                }
            }
        
    return "";
    }
};
16100