题目描述: 最长公共前缀
编写一个函数来查找字符串数组中最长的公共前缀字符串。
解题思路:
用第一个字符串s,比较strs的每个字符串的公共前缀,并记录前缀有m位,之后输出s的前m位字符即可。
但是在输出过程中,使用了如下的赋值方式:
for(int i = 0 ; i < m ; i ++)
ans[i] = s[i];
在string类型中,内部的成员是private的,所以不能直接对内部成员进行访问,必须通过push_back、assign等内部函数进行访问才行。
private:
char *p_str;
附:
c++中string类的源代码
C++ string详解
代码:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int n = strs.size();
if(n == 0) return "";
string s = strs[0], ans;
int m = s.length();
for(int i = 1 ; i < n ; i ++) {
int len = strs[i].length();
if(m > len) m = len;
for(int j = 0 ; j < m ; j ++) {
if(s[j] != strs[i][j]) {
m = j;
break;
}
}
}
ans.assign(s, 0, m);
return ans;
}
};