LeetCode——最长公共前缀

LeetCode——最长公共前缀

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

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

示例 1:

输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:

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

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

解题注意事项:要预防空指针异常

solution代码:

package LeetCode.longestCommonPrefix;

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

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

示例 1:

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

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

所有输入只包含小写字母 a-z 。
 */
public class longestCommonPrefixSolution {
    public static String solution(String[] strs){
        String longestString = "";//把最长的共同前缀存放在longestString
        int n = strs.length;//记录字符串数组的长度
        if(n == 0){//如果字符串数组为空,直接返回
            return longestString;
        }
        int min = strs[0].length();//记录字符串数组中最短的字符串的长度
        for (int i = 0; i < n; i++) {
            if(strs[i].length() < min){
                min = strs[i].length();
            }
        }
Lable:  for (int i = 0; i < min; i++) {//每一位
            for (int j = 0; j < n - 1; j++) {//遍历每一个字符串
                if(strs[j].charAt(i) != strs[j + 1].charAt(i)){
                    break Lable;//当有不相等的情况直接跳出整个循环
                }
            }
            longestString += strs[0].charAt(i);//当每个字符串中的这个位置的字符都相等,则更新longestString
        }
        return longestString;
    }
}

main函数代码:

package LeetCode.longestCommonPrefix;

import java.util.Scanner;

public class longestCommonPrefixMain {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("输入字符串个数:");
        int n = scan.nextInt();
        String[] strs = new String[n];
        System.out.println("输入字符串:");
        for (int i = 0; i < n; i++) {
            strs[i] = scan.next();
        }
        System.out.println("最长公共前缀:" + longestCommonPrefixSolution.solution(strs));
    }
}

测试用例测试结果:
LeetCode——最长公共前缀_第1张图片
LeetCode——最长公共前缀_第2张图片
LeetCode测试结果:
在这里插入图片描述

你可能感兴趣的:(算法题,LeetCode)