题目描述:
注:本分类博客中的所有代码可以直接拷贝到eclipise
代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import net.sf.json.JSONArray;
/**
*
*
* @版权 : Copyright (c) 2017-2018 *********公司技术开发部
* @author: gaozhenchao
* @E-mail: 1226046769@qq.com
* @版本: 1.0
* @创建日期: 2019年1月23日 下午4:46:52
* @ClassName Solution
* @类描述-Description: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
* @修改记录:
* @版本: 1.0
*/
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0)
return "";
// 以数组第一个数值为参照
String prefix = strs[0];
// 以第二个值开始
for (int i = 1; i < strs.length; i++)
// 如果匹配成功 index匹配索引
while (strs[i].indexOf(prefix) != 0) {
// 参照值长度减一(尾部截断)
prefix = prefix.substring(0, prefix.length() - 1);
// 如果参照值为空 匹配不成功
if (prefix.isEmpty())
return "";
}
// 循环结束 如果参照值不为空,就是最长公共前缀
return prefix;
}
}
public class MainClass {
public static String[] stringToStringArray(String input) {
// JsonArray jsonArray = JsonArray.readFrom(input);
JSONArray jsonArray = JSONArray.fromObject(input);
String[] arr = new String[jsonArray.size()];
for (int i = 0; i < arr.length; i++) {
arr[i] = jsonArray.get(i).toString();
}
return arr;
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
String[] strs = stringToStringArray(line);
String ret = new Solution().longestCommonPrefix(strs);
String out = (ret);
System.out.print(out);
}
}
}