题目

easy-14 Longest Common Prefix

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。

示例 1:
输入: [“flower”,”flow”,”flight”]
输出: “fl”

示例 2:
输入: [“dog”,”racecar”,”car”]
输出: “”

代码

  1. private static String longestCommonPrefix(String[] strs) {
  2. if(strs.length==0||strs==null) return "";
  3. String common=strs[0];
  4. for (String str : strs) {
  5. while(str.indexOf(common)!=0)//判断common是否为当前字符串的开头
  6. {//循环直到common截取变成该字符串的开头,然后for循环进行下一个字符串的比较
  7. common=common.substring(0,common.length()-1);//截掉common最后一个字符
  8. }
  9. }
  10. return common;
  11. }

解题过程

题目要求在字符串数组中找到每一个字符串的共同前缀,如果没有则返回””
那么可以用String类的方法:
public int indexOf(String str): 查找参数字符串在本字符串首次出现的位置,如果没有返回-1
由于该方法查找的是字符串首次出现的位置,则我们将其设置成判断返回值是否为0来作为前缀的条件

以及
stringObject.substring(start,stop):截取指定长度的字符串
来对比较的字符串进行裁剪

因为题目要求返回的是公共前缀,那么只要在循环中遇到非前缀的情况,就对其进行裁剪减去字符串最后一个字符,再次比较,直到确定为前缀后,再进行下一个字符串的比较,如果字符串始终不是被比较字符串的前缀,则会被裁剪成 “” ,这就是没有公共前缀的情况。