Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string “”.
Example 1:
Input: [“flower”,“flow”,“flight”]
Output: “fl”
Example 2:
Input: [“dog”,“racecar”,“car”]
Output: “”
Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z.
public static String GetPrefix1(String[] str)
{
int len = Integer.MAX_VALUE;
for(int i = 0; i < str.length; i++)
{
len = Math.min(str[i].length(),len);
}
int i = 0;
for(; i < len; i++)
{
boolean bool = false;
int j = 0;
while(j < str.length-1)
{
if(str[j].charAt(i) == str[j+1].charAt(i))
{
j++;
}
//只要匹配到有字符串不相等,则跳出循环
else if(str[j].charAt(i) != str[j+1].charAt(i))
{
bool = true;//设计标记跳出最外层循环
break;
}
}
if(bool)
{
break;
}
}
if(i - 1 >= 0)
{
return str[0].substring(0,i);
}
else
{
return "";
}
}
public static String GetPrefix2(String[] str)
{
if(str == null || str.length == 0)
return "";
String prefix = str[0];
for(int i = 1; i < str.length; i++)
{
//如果下一个字符串包含这个字符串,则其索引必定是从0开始
while(str[i].indexOf(prefix) != 0)
{
prefix = prefix.substring(0,prefix.length() - 1);
}
}
return prefix;
}