首页 > 代码库 > 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 }
测试代码地址:
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。