一、力扣打卡
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
最开始的时候看到这个题目,我的想法是先找到数组中最短的字符串,然后就可以以这个字符串长度为依据,然后再比较各个字符串中的每个字符是不是相等,但是后来发现我写不出来代码
仔细看了一下别的大佬上传的解决方法,我发现我的思维还是有希望的;
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
int num=0;
String str=null;
for(int i=0;i<strs.length-1;i++){
if(strs[i].length()<strs[i+1].length())
{num=strs[i].length();
str=strs[i];}
else{ num=strs[i+1].length();
str=strs[i+1];
}
}
for(int i=0;i<num;i++){
char c=str.charAt(i);
for(int j=0;j<strs.length;j++){
if(j>num||strs[j].charAt(i)!=c)
return str.substring(0,i);
}
}
return str;
}
}
然后参照了别的大佬的代码,我发现还有其他的方法去解决
方法一:纵向查找法
class Solution {
public String longestCommonPrefix(String[] strs) {
//思维过程:就是先比较每个字符串的第一个,然后比较第二个、第三个。。。
//首先判断输入的字符串是不是存在,不存在则返回“”
if(strs==numm|| strs.length==0){
return "";
}
for(int i=0;i<strs[0].length;i++){
//以第一个作为参考
char c=strs[0].charAt(i);
for(int j=0;j<strs.length;j++)
{
//注意这里的判断条件为,因为你不确定你的strs[0]就是长度最小的,所以你要
加一个限制条件就是当长度达到其中某一个的长度的时候就不再继续了!
if(strs[j].charAt(i)!=c || i==strs[j].length)
return strs[0].substring(0,i);
}
}
return str[0];
}
}
方法二:分治法
分治法就是分而治之,说实话,最开始是完全没想到分治法这个东西
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
} else {
return longestCommonPrefix(strs, 0, strs.length - 1);
}
}
public String longestCommonPrefix(String[] strs, int start, int end) {
if (start == end) {
return strs[start];
} else {
int mid = (end - start) / 2 + start;
String lcpLeft = longestCommonPrefix(strs, start, mid);
String lcpRight = longestCommonPrefix(strs, mid + 1, end);
return commonPrefix(lcpLeft, lcpRight);
}
}
public String commonPrefix(String lcpLeft, String lcpRight) {
int minLength = Math.min(lcpLeft.length(), lcpRight.length());
for (int i = 0; i < minLength; i++) {
if (lcpLeft.charAt(i) != lcpRight.charAt(i)) {
return lcpLeft.substring(0, i);
}
}
return lcpLeft.substring(0, minLength);
}
}
二、Spring集成Junit
1. 原始Junit测试Spring的问题
都存在
ApplicationContext app= new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserService user = app.getBean(UserService.class);
这两句话,会使得很繁琐
解决方案:
让SpringJunit负责创建Spring容器,但是需要将配置文件告诉他
将需要进行测试bean直接在测试类中进行注入

注意:第一步需要导入spring-test的jar包,可以去官网下载或者私聊我获取哦
步骤一:导入Spring集成Junit的坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.17.RELEASE</version>
</dependency>

使用全注解的方式需要将ContextConfiguration修改为下面的
@ContextConfiguration(classes = {SpringConfiguration.class})
补发昨天的了,最近这两天有点事情都没来的及发
好看的图片分享:


本文介绍了两种方法解决寻找字符串数组的最长公共前缀问题,包括纵向查找法和分治法,并展示了Spring集成Junit测试的简化方式,通过注解实现测试类中Bean的注入,提高测试效率。

被折叠的 条评论
为什么被折叠?



