题目:
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
.
题解:
解题思路是,以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,其他字符串的长度大于第一个或者有不同字符串返回0到当前位置前一个位置的子字符串就行。
如果跳出循环就说明这些字符串完全相同,返回第0个字符串。
代码如下:
public class LongestCommonPrefix
{
public static void main(String[] args)
{
/**
* 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 "".
*
* Note:
*
* All given inputs are in lowercase letters a-z.
*/
/**
* Example 1:
* Input: ["flower","flow","flight"]
* Output: "fl"
*/
String[] strs1 = { "flower", "flow", "flight" };
System.out.println(longestCommonPrefix(strs1));
/**
* Example 2:
* Input: ["dog","racecar","car"]
* Output: ""
* Explanation: There is no common prefix among the input strings.
*/
String[] strs2 = { "dog", "racecar", "car" };
System.out.println(longestCommonPrefix(strs2));
}
public static String longestCommonPrefix(String[] strs)
{
if (strs == null || strs.length == 0)
{
return "";
}
for (int i = 0; i < strs[0].length(); i++)
{
char c = strs[0].charAt(i);
for (int j = 1; j < strs.length; j++)
{
if (strs[j].length() == i || strs[j].charAt(i) != c)
{
return strs[j].substring(0, i);
}
}
}
return strs[0];
}
}