记录LeetCode第三天( Longest Common Prefix和strs[0].substr(0,i))

记录LeetCode第三天( Longest Common Prefix)

1. 题目

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 “”.

2. 例子

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.

补充例子(我理解错误而导致输出错误时给的例子)

input:[]
output: “”

input:[“a”]
output: “a”

3. 代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) { 
        int n=0;
        string p = "";
        int j=0;//j为vector中string的序号      
        for(int i =0; j<strs.size() && strs[j][i]!='\0'; ++i )//i是string中字符的序号
        {
             while(j<strs.size())
            {
                if(j==0 || strs[j][i] == strs[j-1][i])//当j为0或者连续两个string里第i个字符相同
                    j++;//自增,用于比较下一组
                else
                    return p; //只要有一组不相等直接返回当前数组        
            }     
               p= p + strs[0][i];//全部string中第i个值都相等时,输出字符串加上这个字符。
               j = 1;//如果vector里面只有一个strnig不会再进for循环,所以直接定义j=1
        }
        return p;        
    }
};

速度还好,但是占内存超多。

然后继续看讨论区某大大(withacup)的代码,emmmmm…还有好多要学呀。。

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
    if(strs.size() == 0) return "";
    int i = -1;
    while(strs[0][++i])
        for(int j = 0;j < strs.size();j++)
            if(strs[j][i] != strs[0][i]) return strs[0].substr(0,i);
    return strs[0].substr(0,i);
}
};

4. strs[0].substr(0,i)

看啦一个 https://blog.csdn.net/sunshihua12829/article/details/50484966 的厉害的讲解,里面例子超棒。
这样的话,上面代码里就返回的是从strs[0]0位开始直到i位置的字符串。如果没有后面的i就直接返回到了最后一位。

如果我好好刷题希望能录到人工智能,不想学通信了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值