【LeetCode】Longest Common Prefix
2013-10-29 17:01
387 查看
Write a function to find the longest common prefix string amongst an array of strings.
java code : 预处理出最短串与任意一字符串的公共前缀,用StringBuilder保存,再去遍历剩余字符串,从尾处开始推。
复杂度O(m * n) m : length of the arrays, n :length of the prefix
java code : 预处理出最短串与任意一字符串的公共前缀,用StringBuilder保存,再去遍历剩余字符串,从尾处开始推。
复杂度O(m * n) m : length of the arrays, n :length of the prefix
public class Solution { public String longestCommonPrefix(String[] strs) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. int numofstr = strs.length; if(numofstr < 1) return new String(""); if(numofstr == 1) return strs[0]; StringBuilder res = new StringBuilder(); String minlen = strs[0]; int indexmin = 0; for(int i = 1; i < numofstr; i++) { if(minlen.length() > strs[i].length()) { minlen = strs[i];indexmin = i;} } String str1 = strs[0]; String str2 = strs[1]; int index2 = 1; if(minlen.equals(strs[0])) { str1 = minlen; str2 = strs[1]; } else { str1 = minlen; str2 = strs[0]; index2 = 0; } int i = 0, j = 0; while(i < str1.length() && j < str2.length()) { if(str1.charAt(i) == str2.charAt(j)) { res.append(str1.charAt(i)); i++;j++; continue; } break; } if(numofstr < 3 || res.length() == 0) return res.toString(); for(int k = 0; k < numofstr; k++) { if(k == indexmin || k == index2) continue; int len = res.length(); String cur = strs[k]; while(len > 0 && (cur.charAt(len - 1) != res.charAt(len - 1))) { res.deleteCharAt(len - 1); len--; } } return res.toString(); } }
相关文章推荐
- 比较三个数,输出最大值
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 四
- js获取表格列的值
- 关于UNIX/Linux下SUID、SGID的解析
- Redmine1.1.2 with Ruby Enterprise 1.8.7 installed Ubuntu 10.0.4
- 盘点互联网十大运营模式
- c++实现多态的方法
- cocos2d路径
- 绿色版tomcat负载均衡部分配置
- BIOS密码破解及清除
- Activity 和Service绑定
- Oracle CASE WHEN 用法介绍
- gitolite部署
- 【使用JSOUP实现网络爬虫】解析一个body片断
- linux中,qt creator打开文件时的中文乱码问题
- 求1000以内所有偶数的和的方法3
- 第十周-1 循环算法(for的用法 )
- js模态对话框,返回值到父窗口
- kissy初体验-waterfall
- Orapwd 初步认识