leetcode [Longest Common Prefix]

来源:互联网 发布:js删除object指定元素 编辑:程序博客网 时间:2024/06/05 00:39
public class Solution {public String longestCommonPrefix(String[] strs){String res = "";boolean flag = true;for(int i = 0; flag; i++){if(strs.length == 0){flag = false;//处理空串的情况}if(strs.length == 1){//flag = false;res = strs[0];}for(int j = 0; j < strs.length - 1; j++){if(strs[j].length() <= i || strs[j + 1].length() <= i){//防止下标越界flag = false;break;}if(strs[j].charAt(i) != strs[j + 1].charAt(i)){flag = false;break;}}if(flag){res += strs[0].charAt(i);}}return res;}}

解法二(次优解):

public class Solution {public String longestCommonPrefix(String[] strs){String res = "";if(strs.length != 0){//防止下标越界,可以包含长度为1的情况Arrays.sort(strs);//巧用排序这个函数,字符串排序是优先按字母,然后长度...的规则//按次序比较排序后的第一个字符串与最后一个字符串即可String temp1 = strs[0];String temp2 = strs[strs.length - 1];for(int i = 0; i < temp1.length() && i < temp2.length(); i++){if(temp1.charAt(i) == temp2.charAt(i)){res += temp1.charAt(i);}else{break;}}}return res;}}

解法三(最优解):

public class Solution {public String longestCommonPrefix(String[] strs){String res = "";/*indexOf方法:返回 String对象内第一次出现子字符串的字符位置, * 字符串的IndexOf()方法搜索在该字符串上是否出现了作为参数传递的字符串, * 如果找到字符串,则返回字符的起始位置 (0表示第一个字符,1表示第二个字符依此类推) * 如果说没有找到则返回 -1 *注: "".indexof("")的结果为0 *//*public String substring(int beginIndex, int endIndex) * 从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符 * 注:string.substring(0,0)的结果为"" */if(strs.length != 0){//防止下标越界res = strs[0];//先找到一个参考值,共同最大的字符串的长度肯定不会超过其中任何一个字符串的长度for(int i = 1; i < strs.length; i++){//从参考字符串后的字符串开始while(strs[i].indexOf(res) != 0){res = res.substring(0, res.length() - 1);//遍历每一个字符串,调整要得的res//res.substring(0, res.length() - 1);而不是strs[i].substring(0, res.length() - 1);调整的是res}}}return res;}}


0 0