Leetcode习题记录——Longest Common Prefix
来源:互联网 发布:加密软件破译系统 编辑:程序博客网 时间:2024/06/03 19:41
首先先普及一个知识:stringbuilder
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 。而stringbuilder会比stringBuffer更快
public class Solution { public String longestCommonPrefix(String[] strs) { String result = strs.length==0?"":strs[0]; for(int j=0;j<strs.length;j++){ result = commonPrefix(result,strs[j]); } return result; } private String commonPrefix(String origin,String target){ StringBuffer sb = new StringBuffer(); int loop = origin.length()>=target.length()?target.length():origin.length(); for(int i=0;i<loop;i++){ if(origin.charAt(i) == target.charAt(i)){ sb.append(origin.charAt(i)); }else{ break; } } return sb.toString(); } }
这个方法很巧妙,写了两个函数,重复使用result这个变量,避免了很多麻烦。
第二种方法:
这种方法先将数组排序,只比较最小的和最大的就能得出结果,更加巧妙。
public class Solution { public String longestCommonPrefix(String[] strs) { StringBuilder result = new StringBuilder(); if (strs!= null && strs.length > 0){ Arrays.sort(strs); char [] a = strs[0].toCharArray(); char [] b = strs[strs.length-1].toCharArray(); for (int i = 0; i < a.length; i ++){ if (b.length > i && b[i] == a[i]){ result.append(b[i]); } else { return result.toString(); } } } return result.toString(); }}
阅读全文
0 0
- Leetcode习题记录——Longest Common Prefix
- LeetCode—Longest Common Prefix
- LeetCode——Longest Common Prefix
- LeetCode——Longest Common Prefix
- Longest Common Prefix —— Leetcode
- leetcode——Longest Common Prefix
- leetcode 014 —— Longest Common Prefix
- LeetCode题解——Longest Common Prefix
- #14 LeetCode——Longest Common Prefix
- LeetCode——14. Longest Common Prefix
- Leetcode——14. Longest Common Prefix
- 个人记录-LeetCode 14. Longest Common Prefix
- LeetCode: Longest Common Prefix
- LeetCode Longest Common Prefix
- LeetCode : Longest Common Prefix
- [Leetcode] Longest Common Prefix
- [LeetCode] Longest Common Prefix
- [LeetCode]Longest Common Prefix
- spring 整合 redis,以及spring的RedisTemplate如何使用
- golang中使用go时出现的的问题
- new/delete与malloc/free的区别是什么
- iOS工作小技巧及填坑记录
- Android 测试CTS,GTS目录及脚本整理
- Leetcode习题记录——Longest Common Prefix
- PAT甲级 1022
- springboot入门3-操作redis
- Meanshift,聚类算法
- Python随记(二)字符串
- Python分割训练集和测试集
- Linux线程创建以及回调函数的使用
- log4j日志配置详解
- Shell传递参数~03