博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日算法----最长公共前缀----2020/09/29(1/4)
阅读量:4131 次
发布时间:2019-05-25

本文共 1399 字,大约阅读时间需要 4 分钟。

目录

1. 题目描述

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

说明:

所有输入只包含小写字母 a-z 。

2. 示例

在这里插入图片描述

3. 思路

  • 只要对比数组里面每个字符串里面的相同下标保存的值是否相同即可。

4. 遇上的问题

  • 没做出来之前就怀疑自己这样做会不会导致自己的算法两次循环消耗太多!因为暂时没想到别的方法就硬着头皮做下去。
  • 一些临界值条件没有考虑到,输入值为空啊,输入值为双引号啊

5. 具体实现代码

自己写的代码

class Solution {
public String longestCommonPrefix(String[] strs) {
//输入值为空的时候直接返回 if(strs.length<1) return ""; //用来保存第一个值,然后和其他字符串相同下标的值进行比较 char temp=' '; //用于动态增加字符串 StringBuilder sb = new StringBuilder(); //通过循环对比字符串 //外循环,第一个字符串里面的字符 a:for(int i = 0;i
=strs[j].length()||temp!=strs[j].charAt(i)){
break a; } } //遍历一边都相等,把字符加到StringBuilder里面去 sb.append(temp); } //用来判读,如果sb对象里的值为初始值, //则意味着没有添加。直接返回 if(sb.indexOf(" ")==0){
return ""; } return sb.toString(); }}

6. 学习收获,官方一如既往的妙啊

  • 官方这次真的很牛啊,讲了四种思路,第一种是水平的,我感觉水平的会让人更好理解。让第一个字符数为前缀,然后和后面的字符串比长度,谁小就截取原前缀从0到最小长度的值,遍历完就取出来了,妙啊!没有想到水平的取法。
  • 第二种的话,我和官方差不多,不过它没有截取放到一个新的对象里,而是记录下标,然后通过String的subString(index,length)方法来截取返回,妙啊!我又回顾了一个String方法。
  • 第三种是分治,不断将数组从中间切开切成两半(递归的过程),到最后进行相邻两个数进行字符上的判断,返回(两者)最长的公共字符串(递归出口),然后依次比较返回的最长公共字符前缀,最后得出一个整体上的最长公共前缀。
  • 第四种是二分查找,这种二分查找需要先找到传进来数组的最短字符串的长度,根据最小长度除以2的中值来进行遍历,让每次的也是利用遍历字符串里相同坐标的值是否相等的方式,如果再这个长度里面相等则从中间往上遍历(以传进来的字符数组的长度来说),如果不等就从高位见减一,从新计算。

7 题目来源


完成了第二个加油加油欧里给! ------swrici

转载地址:http://gfdvi.baihongyu.com/

你可能感兴趣的文章
读后感:&gt;
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>
浅谈Spring声明式事务管理ThreadLocal和JDKProxy
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>