【leetcode】Longest Common Prefix

    xiaoxiao2021-12-14  28

    Longest Common Prefix

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

    问题分析:

         (1)  对于这个问题,首先处理特殊字符串,对于[] 和[""]等字符串要优先处理,输出“”,对于字符串数组中只有一个字符串的情况,那么它自己本身就是最长前缀,直接输出即可。

         (2)找出字符串数组中字符串长度最低的字符串,依次作为循环判断终止条件,然后通过循环两两字符串进行对比,每次对比中,字符相同则i++,否则,i--;

         (3)特别要注意,什么时候要跳出循环,当i++发现前缀不相等,当i--发现字符串相等的时候,则就要跳出本次循环。在跳出循环后,一定要记住,将i--;

    Solution:

    public String longestCommonPrefix(String[] strs) { if(strs.length == 0) return ""; int i = 1, j=0; int flag = 0; int min_len = strs[0].length(); for(j = 0; j < strs.length; ++j){ if(strs[j].length() < min_len){ min_len = strs[j].length(); } } if(min_len == 0) return ""; for(j = 0; j < strs.length-1; ++j){ while( i <= min_len && i > 0){ if((strs[j].substring(0, i)).equals(strs[j+1].substring(0, i))){ i++; if(flag == 1) break; }else{ i--; flag = 1; } } if(i==0) break; else if(i > min_len || flag == 1) i--; } return strs[0].substring(0, i); }Conclusion:

    AC:10ms

    虽然击败了83.3%的java算法,但是和C++比起来还是差很多。总之,java一直都是最慢的语言!心累!

         

    转载请注明原文地址: https://ju.6miu.com/read-962701.html

    最新回复(0)