zoukankan      html  css  js  c++  java
  • leecode刷题(19)-- 最长公共前缀

    leecode刷题(19)-- 最长公共前缀

    最长公共前缀

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

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

    示例 1:

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

    示例 2:

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

    说明:

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


    思路:

    这道题我用的是暴力破解的方法,遍历字符串数组,依次比较每个字符,如果都相等,则长度加一再比较,如果不相等,则返回之前的字符。

    代码如下:

    class Solution {
        public String longestCommonPrefix(String[] strs) {
            if (strs.length == 0)	return "";
    		StringBuilder res = new StringBuilder();
    		for (int i = 0; i < strs[0].length(); i++) {
    			int j = 1;
    			for (; j < strs.length; j++) {
    				if (strs[j].length() <= i || strs[0].charAt(i) != strs[j].charAt(i)) {
    					return res.toString();
    				}
    			}
    			if (j == strs.length) {
    				res.append(strs[0].charAt(i));
    			}
    		}
            return res.toString();
        }
    }
    

    几个知识点

    1. StringBuilder :

    String 类是字符串常量,是不可更改的常量。而 StringBuffer 是字符串变量,它的对象是可以扩充和修改的。

    所以我们在这里使用 StringBuffer 可以避免每次添加字符时都要 new 一个新对象。

    2. 字符串数组中字符的定位:

    字符串数组即形如这样的数组:String[] res = {"abc", "def", "ghi"}

    比如我们找 "abc" 这个字符串,可以直接写:res[0],但是如果我们要找 "abc" 中的 a,那我们应该怎样写呢?

    如果写成 res[0][0] ,在 C++ 中是没有问题的,但是在 java 中会报错:array required, but String found。

    我们在 java 中应该写成:res[0].charAt(0)

    官方题解

    官方有更好的方法,看了确实很好,帮助很大,这道题的解题思路不唯一:官方题解

  • 相关阅读:
    冒泡排序-用函数写
    c#语言基础
    c#小知识点
    令人头疼的冒泡排序
    字符串 与函数
    数组 冒泡排序 打印菱形 随机生成不同的数
    if语句练习
    运算符练习
    类型转换
    C#初学
  • 原文地址:https://www.cnblogs.com/weixuqin/p/10422147.html
Copyright © 2011-2022 走看看