1. 题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
2. 题解
c++:
没想出来。。。看了题解。思路是;
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(!strs.size()) {
return "";
}
int length = strs.size();
string result = strs[0];
for(int i = 0; i < length; i++) {
result = longestCommonPrefix(result, strs[i]);
if (!result.size()) {
break;
}
}
return result;
}
string longestCommonPrefix(const string& str1, const string& str2) {
int length = min(str1.size(), str2.size());
int index = 0;
while(index <= length && str1[index] == str2[index]) {
index++;
}
return str1.substr(0, index);
}
};
- 知识点
substr()函数
std::string::substr
string substr (size_t pos = 0, size_t len = npos) const;
1.产生子串
返回一个新建的 初始化为string对象的子串的拷贝string对象。
子串是,在字符位置pos开始,跨越len个字符(或直到字符串的结尾,以先到者为准)对象的部分。
2.参数pos
第一个字符的位置被复制为子串。
如果这是等于字符串的长度,该函数返回一个空字符串。
如果这是大于字符串的长度,它会抛出out_of_range。
注意:第一个字符表示为值0(不是1)。len
获取子串的长度。
size_t is an unsigned integral type (the same as member type string::size_type).
3.返回值
A string object with a substring of this object.
评论 (0)