注意审题:只是求解最长公共前缀,而不是字符串数组中的最长公共字符串
1、分治法的定义:
当求解的问题较复杂,不能立刻得到原问题的解,不过这一类问题可以分解为若干个与原问题性质相类似
的子问题,而子问题可以方便得到它们的解,最后通过合并子问题的解
得到原问题的解。
2、分治法适用的条件
(1)、原问题可以分解为若干个与原问题性质相类似的子问题;
(2)、问题的规模缩小到一定程度后可方便求解;
(3)、子问题的解可以合并到原问题的解;
(4)、分解出的各个子问题相互独立,即不包含重叠子问题。
3、分治法的求解步骤
(1)、分解问题(divide):把具有n个元素的数组分解为两个n/2大小的数组;
(2)、求解子问题(conquer):递归求解子数组,直到子数组只包含一个元素为止;
(3)、合并子问题的解(combine):两两合并已排好序的子数组使之成为一个新的排好序的子数组,重复这样两两合并的过程直到得到原问题的解。
4、最长公共前缀问题
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
5、示例代码
class Solution {
/**
* @param String[] $strs
* @return String
*/
function longestCommonPrefix($strs) {
//过滤输入
if(empty($strs))
{
return