码迷,mamicode.com
首页 > 其他好文 > 详细

No.014:Longest Common Prefix

时间:2016-10-12 10:51:29      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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

标签:

原文地址:http://www.cnblogs.com/jing-an-feng-shao/p/5951667.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!