Java算法练习——最长公共前缀
题目链接
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
说明:
所有输入只包含小写字母 a-z 。
示例 1
输入: ["flower","flow","flight"]
输出: "fl"
示例 2
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
题解
public String longestCommonPrefix(String[] strs) {
if (strs.length < 1) {
return ""; // 数组长度小于1,直接返回默认值
}
StringBuilder stringBuilder = new StringBuilder();
int minLength = Integer.MAX_VALUE;
for (String str : strs) {
if (str.length() == 0) {
return ""; // 其中一个字符串长度为0,直接返回默认值
}
if (str.length() < minLength) {
minLength = str.length();
}
}
for (int i = 0; i < minLength; i++) {
char prefix = strs[0].charAt(i);
boolean flag = true;
for (String str : strs) {
if (str.charAt(i) != prefix) {
flag = false;
}
}
if (flag) {
stringBuilder.append(prefix);
} else {
break;
}
}
if (stringBuilder.toString().length() > 0) {
return stringBuilder.toString();
} else {
return "";
}
}
复杂度分析
- 时间复杂度:$O(n^2)$。
- 空间复杂度:$O(1)$。
手记
遍历即可,注意特殊值的影响,提前排除特殊情况即可。
Java算法练习——最长公共前缀的更多相关文章
- Python数据结构与算法_最长公共前缀(05)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- PHP算法之最长公共前缀
### 解题思路 方法太笨重后期优化 循环比较 循环长度利用max(最长字符串的循环) 不满住条件的截取 ### 代码 ```php class Solution { /** * @ ...
- 最长公共前缀(java实现)
题目: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow& ...
- Java实现 蓝桥杯VIP 算法提高 最长公共子序列
算法提高 最长公共子序列 时间限制:1.0s 内存限制:256.0MB 问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格 ...
- 最长公共前缀(Java)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...
- LeetCode--014--最长公共前缀(java)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- 【leetcode算法-简单】14. 最长公共前缀
[题目描述] 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","fl ...
- leetcode.字符串.14最长公共前缀-Java
1. 具体题目 编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","fl ...
- Java实现 LeetCode 14 最长公共前缀
14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",&quo ...
随机推荐
- python进阶强化学习
最近学习了慕课的python进阶强化训练,将学习的内容记录到这里,同时也增加了很多相关知识. 主要分为以下九个模块: 基本使用 迭代器和生成器 字符串 文件IO操作 自定义类和类的继承 函数装饰器和类 ...
- 题解 nflsoj489 【六校联合训练 CSP #15】小D与随机
题目链接 考虑枚举好点的集合.此时要考虑的问题是如何填入\(1\sim n\)这些数使得恰好我们枚举到的这些点是好点,即:求出有多少种合法的填数方案. \(1\)号点一定是好点.那么除\(1\)号点外 ...
- WorkerServices构建Windows服务
.NET Core 3.1和WorkerServices构建Windows服务 介绍 ASP.NET Core 3增加了一个非常有意思的功能Worker Service.他是一个ASP.NET Cor ...
- P1061 判断题
P1061 判断题 转跳点:
- 读《Adaptive Thresholding Using the Integral Image》自适应图像阈值
图像的二值化问题总是一个问题.虽然使用深度学习的方法取得了不小的进展,但是传统的方法还是值得借鉴. 刚好随机游走到这篇文章 挖个07年的坟 地址:http://people.scs.carleton ...
- 编程练习:求某个数的n次方,返回其个位和十位
#!/usr/bin/env python def pow1(n,m): if m==0: return 1 if m==-1: return (1/n) if m & 1 != 0: ret ...
- 微信小程序—添加背景音乐
问题: 想在打开小程序时就自动播放背景音乐(循环) 解决方法: 1.思路:写一个函数,在 onLoad()中调用 2. //index.js //获取应用实例 const back = wx.get ...
- 整理jvm概念和原理详解以及gc机制
注:源代码就是.java文件,JVM字节码就是.class文件 1. Java 堆(Java Heap):(1)是Java虚拟机所管理的内存中最大的一块.(2)在虚拟机启动的时候创建.堆是jvm所有线 ...
- MySQL如何获取时间戳
时间戳函数:current_timestamp() 将时间列格式设为timestamp,设定其默认值为CURRENT_TIMESTAMP. 插入一条新纪录,数据库就会自动在时间列存储当前时间.
- JAVA笔记03 变量和运算符 面试题以及笔记
标识符的命名规则需要注意哪几点? 定义 就是给类,接口,方法,变量等起名字的字符序列 组成规则 英文大小写字母 数字 $和_ 注意事项 不能以数字开头 不能是java中的关键字 区分大小写 常见的命名 ...