zoukankan      html  css  js  c++  java
  • LeetCode 7最长公共前缀

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

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

    示例 1:

    输入: ["flower","flow","flight"]
    输出: "fl"
    

    示例 2:

    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    

    说明:

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

    思路:

    要求最长的公共前缀,就是求字符串数组所有字符串前面相同的部分。

    创建一个新函数来比较两个字符串前面相同的长度。

    通过比较字符串0和剩余字符串的公共前缀,选出最小的长度即为最长公共前缀。

    class Solution {
        public String longestCommonPrefix(String[] strs) {
            if (strs.length==0)return "";
            if (strs.length==1)return strs[0];
            int sameCharNum=0;
            Set<Integer> set=new HashSet<>();
            for (int i = 1; i < strs.length; i++) {
                sameCharNum = longestNum(strs[0], strs[i]);
                set.add(sameCharNum);
            }
            int minNum=Integer.MAX_VALUE;
            for (int i:set){
                if(minNum>i){
                    minNum=i;
                }
            }
            return strs[0].substring(0,minNum);
        }
    
        public int longestNum(String s1,String s2){
            int sameCharNum=0;
            for (int i = 0; i<s1.length()&&i<s2.length(); i++) {
                if (s1.charAt(i)==s2.charAt(i)) {
                    sameCharNum++;
                }else
                    return sameCharNum;
            }
            return sameCharNum;
        }
    }
  • 相关阅读:
    全排列 next_permutation()函数
    hdu1247
    hdu3518
    pku2774 求最长公共子串
    hdu3460 Ancient Printer
    pku2001
    pku 3261
    NOI.AC#2007light【根号分治】
    CF1370F2The Hidden Pair(Hard Version)【交互题,二分】
    P3335[ZJOI2013]蚂蚁寻路【dp】
  • 原文地址:https://www.cnblogs.com/TeFuir/p/9445840.html
Copyright © 2011-2022 走看看