首页 > 代码库 > No.014:Longest Common Prefix

No.014:Longest Common Prefix

题目:

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

官方难度:

Easy

翻译:

写一个函数,用来寻找一个字符串数组中的最长公共前缀。

思路:

1. 长度为0的数组直接退出,长度为1的数组直接返回第一项,一般处理至少长度为2.

2. 将第一个字符串作为现有的最长公共前缀,第二个字符串开始匹配,循环的长度是当前匹配字符串和目前的最长公共前缀的最小值。

3. 逐一匹配,遇到不同的字符,更新最长公共前缀,直接退出内循环。

4. 若最长公共前缀为空字符串"",直接返回,没必要做下面的循环。

解题中可能遇到的困难:

1. 养成好习惯,比较字符串用String.equals()方法,不要用"=="操作符。

解题代码:

技术分享
 1     private static String method(String[] array) { 2         // 特殊处理 3         if (array == null || array.length == 0) { 4             return ""; 5         } else if (array.length == 1) { 6             return array[0]; 7         } else { 8             String currentPrefix = array[0]; 9             // 从数组第二项开始遍历10             for (int i = 1; i < array.length; i++) {11                 // 比较长度取较小者12                 int length = Math.min(currentPrefix.length(), array[i].length());13                 // 出现长度为0的空字符串,不作处理,直接返回14                 if (length == 0) {15                     return "";16                 }17                 StringBuffer sb = new StringBuffer();18                 for (int j = 0; j < length; j++) {19                     // 记得用String.equals()方法20                     if (currentPrefix.substring(j, j + 1).equals(array[i].substring(j, j + 1))) {21                         sb.append(currentPrefix.substring(j, j + 1));22                     } else {23                         // 遇到不一样,赋值退出24                         currentPrefix = sb.toString();25                         // 匹配长度为0,直接返回26                         if (currentPrefix.length() == 0) {27                             return "";28                         }29                         break;30                     }31                 }32             }33             return currentPrefix;34         }35     }
View Code

测试代码地址:

https://github.com/Gerrard-Feng/LeetCode/blob/master/LeetCode/src/com/gerrard/algorithm/easy/Q014.java

LeetCode题目地址:

https://leetcode.com/problems/longest-common-prefix/

PS:如有不正确或提高效率的方法,欢迎留言,谢谢!

No.014:Longest Common Prefix