LeetCode 14. Longest Common Prefix--Java

题目:

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string “”.

Example 1:
Input: [“flower”,“flow”,“flight”]
Output: “fl”

Example 2:
Input: [“dog”,“racecar”,“car”]
Output: “”
Explanation: There is no common prefix among the input strings.

Note:
All given inputs are in lowercase letters a-z.

解答:

想法:先找到前两个字符串的最长公共前缀,作为当前的prefix,再找到此prefix和第三个字符串的最长公共前缀,以此遍历数组。

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length==0){
            return "";
        }
        //一开始假设prefix为公共前缀
        String prefix=strs[0];
        //从第二个元素开始,分别遍历
        for(int i=1;i<strs.length;i++){
            while(strs[i].indexOf(prefix)!=0){
            //若prefix不是公共前缀,则从尾部缩短prefix的长度,直至找到公共前缀
                prefix=prefix.substring(0,prefix.length()-1);
                if(prefix.length()==0)
                    return "";
            }
        }
        return prefix;
    }
}

熟悉此题中String的一些用法:
indexOf(String str)
返回str在字符串中第一次出现的位置
substring(int start,int end)
获取字符串中的子串,返回的子串开始于start,结束于end

补充:

String中的一切用法:

  1. String s;
    s = new String("We are students");
    等价于
    String s = "We are students";String s = new String("We are students");
    2、用无参构造方法生成一个空字符串对象
    String s = new String();
    3、用字符数组构造字符串
char c1[] = {'2','3','4','5'};
String str1 = new String(c);
char c2[] = {'1','2','3','4','5'};
String str2 = new String(c2,1,4);//从第一个字符串开始,长度为4

上面两个构造方法生成的字符串实例的内容均为"2345".
4、用字节数组构造字符串

byte c1[]={66,67,68};
byte c2[]={65,66,67,68};
String str1 = new String(c1);
String str2 = new String(c2,1,3);//从字节数组的第一个字节开始,取3个字节

上面两个构造的字符串实例内容均为"BCD";

  1. int length():获取长度
    String s = "We are students";
    int len=s.length();
    2、char charAt(int index);根据位置获取位置上某个字符。
    String s = "We are students";
    char c = s.charAt(14);
    3、int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
    String s = "We are students";
    int num = s.indexOf("s");
    4、int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
    5、int indexOf(String str):返回的是str在字符串中第一次出现的位置。
    6、int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置。
    7、int lastIndexOf(String str):反向索引。
    8、boolean contains(str);字符串中是否包含某一个子串
    9、boolean isEmpty():原理就是判断长度是否为0。
    10、boolean startsWith(str);字符串是否以指定内容开头。
    11、boolean endsWith(str);字符串是否以指定内容结尾。
    12、boolean equals(str);判断字符内容是否相同
    13、boolean.equalsIgnorecase();判断内容是否相同,并忽略大小写。
    14、String trim();将字符串两端的多个空格去除
    15、int compareTo(string);对两个字符串进行自然顺序的比较
    16、String toUpperCsae() 大转小 String toLowerCsae() 小转大
    17、String subString(begin);
    String subString(begin,end);获取字符串中子串
    18、String replace(oldchar,newchar);将字符串指定字符替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值