问题:

解:

请注意,该问题是查找最长公共前缀

一、水平扫描法

package com.example.demo;public class Test14 {/*** 查找字符串数组中最长的公共**前缀**** @param strs* @return*/public String longestCommonPrefix(String[] strs) {//水平扫描法if (strs == null || strs.length == 0) {return "";}String prefix = strs[0];for (int i = 1; i < strs.length; i++) {// 因为查找的各个字符串的前缀,所以A字符串在B字符串中的开头,不是开头的话,prefix--,重新查询,制动为空时结束while (strs[i].indexOf(prefix) != 0) {prefix = prefix.substring(0, prefix.length() - 1);if (prefix.isEmpty()) {return "";}}}return prefix;}public static void main(String[] args) {Test14 t = new Test14();String[] strings = {"abcd", "abc", "ab"};String s = t.longestCommonPrefix(strings);System.out.println(s);}
}

二、分支法

package com.example.demo;public class Test14 {/*** 查找字符串数组中最长的公共**前缀**** @return*/public String longestCommonPrefix1(String[] strs) {//分治法if (strs == null || strs.length == 0) {return "";}return longestCommonPrefix1(strs, 0, strs.length - 1);}/*** 递归、分治** @param strs* @param left* @param right* @return*/private String longestCommonPrefix1(String[] strs, int left, int right) {// 递归终止条件if (left == right) {// 递归的终止条件要选择好return strs[left];} else {int mid = (left + right) / 2;// 递归的思想(不要深入想递归内部,只要在宏观上认为,该递归返回的字符串就是left到mid之间的最长公共前缀)String lcpLeft = longestCommonPrefix1(strs, left, mid);String lcpRight = longestCommonPrefix1(strs, mid + 1, right);//将返回的左右两个最长公共子串进行比较,获取最终的最长公共前缀return comparePreFix(lcpLeft, lcpRight);}}/*** 比较两个字符串中的最长前缀** @param lcpLeft* @param lcpRight* @return*/private String comparePreFix(String lcpLeft, String lcpRight) {int len = Math.min(lcpLeft.length(), lcpRight.length());for (int i = 0; i < len; i++) {if (lcpLeft.charAt(i) != lcpRight.charAt(i)) {return lcpLeft.substring(0, i);}}return lcpLeft.substring(0, len);}public static void main(String[] args) {Test14 t = new Test14();String[] strings = {"abcd", "abc", "ab"};String s = t.longestCommonPrefix1(strings);System.out.println(s);}
}

leetcode-14-最长公共前缀相关推荐

  1. 52 - 算法- leetcode 14 最长公共前缀

    // leetcode 14 最长公共前缀 str.sub(index1,index2)这个函数不清楚 // for(vector中的类class : vector) for 循环中的index 和 ...

  2. [模拟] leetcode 14 最长公共前缀

    [模拟] leetcode 14 最长公共前缀 1.题目 题目链接 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例1: 输入: [& ...

  3. Leetcode 14.最长公共前缀(Longest Common Prefix)

    Leetcode 14.最长公共前缀 1 题目描述(Leetcode题目链接)   编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 输入: ...

  4. LeetCode 14.最长公共前缀(字符串)

    上一篇博客:Leetcode 13.罗马数字转整数(字符串)  写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode的 ...

  5. [leetcode] 14. 最长公共前缀

    14. 最长公共前缀 超级简单... class Solution { public:string longestCommonPrefix(vector<string> &strs ...

  6. LeetCode 14. 最长公共前缀 (单指针水平扫描)

    14. 最长公共前缀 题意: 找出一个字符串数组中所有字符串的最长公共前缀,如果不存在返回"" 思路: 假设数组第一个元素就是ans 从下标1开始遍历数组 用一个指针水平扫描ans ...

  7. LeetCode 14. 最长公共前缀

    1. 题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1:输入: ["flower","flow ...

  8. LeetCode 14 最长公共前缀

    https://leetcode-cn.com/problems/longest-common-prefix/ 解决方案 class Solution {public String longestCo ...

  9. Leetcode 14.最长公共前缀

    原题链接 解题思路: 1.本题使用模拟法 2.取第一个字符串的首元素,与剩余字符串对应位置相比较,如果全部相等将此字符加入结果中,继续到下一个字符一次比较,直至出现不相同的位置,返回结果. 3.需要注 ...

  10. [leetcode]14. 最长公共前缀

    1.一列一列地比: class Solution {public:string longestCommonPrefix(vector<string>& strs) {if(strs ...

最新文章

  1. 欧几里得算法与唯一分解定理
  2. mysql行级锁测试
  3. 最前线|爱奇艺低调上线“好多视频”,短视频战场的主动防御
  4. linux集群无密码访问,Linux服务器集群通过SSH无密码登录
  5. SpringMVC快速入门-代码实现
  6. 借汉诺塔理解栈与递归
  7. hangfire.mysql.core_abp 使用 hangfire结合mysql
  8. matlab用高斯消元法解线性方程组,用matlab利用高斯消元法求解线性方程组
  9. oracle change schema,使用pt-online-schema-change修改主键时注意
  10. oracle精度说明符1~38_数据库显示精度说明符过多
  11. QQ音频文件服务器,unlock-music:支持解密网易云/QQ音乐的加密文件和ID3信息补全...
  12. ESC/POS协议打印机工具类(java)
  13. Cesium 三角测量(水平距离,直线距离,高度差)
  14. mactex+vscode+skim打造latex编译环境
  15. Mysql varchar类型长度计算(mysql字段长度计算)
  16. Genbank的gbff格式转gff3格式(补充)
  17. 2011年3月《震痛•震恫•震动》
  18. 中国非正常死亡最高的行业 TOP 10
  19. 选择什么样的思想,就会有什么样的结局
  20. 来,打一下五笔的字根表

热门文章

  1. 广播模块加继电器怎么接线_变频器如何与PLC相连接,怎么用PLC控制?
  2. swingbench oracle rac,使用Swingbench压力测试Oracle RAC
  3. 欧瑞变频器800参数设置_【收藏】变频器密码大全和维修常用方法!
  4. mysql blob 导出_mysql blob导出文本解密 | 学步园
  5. html.锁屏主题,锁屏HTML主题插件GroovyLock发布
  6. 【redis】批量删除key
  7. 提取图片纹理_Fundamentals Of Computer Graphics 第十一章 纹理映射(中)
  8. vue 固定div 滚动_vue移动端 导航吸顶(固定定位)页面滚动出现抖动
  9. 计算机导论中的名词解释,计算机导论期末考试试题及答案
  10. python request file upload_Python request 上传文件