算法题---最长公共前缀
Posted ningjj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法题---最长公共前缀相关的知识,希望对你有一定的参考价值。
题目来源:https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解答:
package com.zx.leetcode.longestcommonprefix; /** * @Author JAY * @Date 2019/6/29 13:30 * @Description 最长公共前缀 **/ public class SolutionV2 public static void main(String[] args) // String[] str = "dog","dracecar","dcar"; // String[] str = "flower","flow","flight"; String[] str = "flow","flow2","flow3","flight"; // String[] str = "1flow","2flow","flow"; System.out.println(longestCommonPrefix(str)); public static String longestCommonPrefix(String[] strs) if (strs.length == 0) return ""; String s = strs[0]; for (int i = 1; i < strs.length; i++) while (strs[i].indexOf(s) != 0) s = s.substring(0,s.length() - 1); if (s.isEmpty()) return ""; return s;
解答二:
package com.zx.leetcode.longestcommonprefix; /** * @Author JAY * @Date 2019/6/29 13:30 * @Description 最长公共前缀 **/ public class Solution public static void main(String[] args) // String[] str = "dog","dracecar","dcar"; // String[] str = "flower","flow","flight"; // String[] str = "flow","flow","flow"; String[] str = "1flow","2flow","flow"; System.out.println(longestCommonPrefix(str)); public static String longestCommonPrefix(String[] strs) if(strs == null || strs.length == 0) return ""; boolean begin = true; StringBuilder sb = new StringBuilder(); int i = 0; int length = strs.length; String first = strs[0]; while (begin) try String substring = first.substring(i, i + 1); for (int index = 1; index < length; index++) if (!substring.equals(strs[index].substring(i,i+1))) begin = false; break; if (begin) sb = sb.append(substring); if (first.equals(sb.toString())) //说明已经全部匹配到了,推出循环 begin = false; i++; catch (Exception e) begin = false; return sb.length() == 0 ? "" : sb.toString();
以上是关于算法题---最长公共前缀的主要内容,如果未能解决你的问题,请参考以下文章
算法leetcode|14. 最长公共前缀(rust重拳出击)