題目:Write a function to find the longest common prefix string amongst an array of strings.
找出所有字元串的最長公共字首。這道題很簡單,但需要注意減少比較字元的操作次數。
2個字元串的最長公共字首,其長度肯定不會超過最短的字元串的長度,設最短的字元串長度為n,那麼隻要比較這2個字元串的前n個字元即可。
如此得出這2個字元串的最長公共字首prefix後,再拿prefix作為新的字元串和數組中的下一個字元串比較,方法同上。
需要注意的是,如果數組中的某個字元串長度為0,或者求得的目前最長公共字首的長度為0,就直接傳回空字串。
Accepted | 7 ms |
class Solution {
public:
string longestCommonPrefix(vector<string> &strs) {
string s("");
if (strs.size() == 0) return s;
if (strs.size() == 1) return strs[0];
for (int j=0; j < strs[0].size(); ++j) {
char ch = strs[0][j];
for (int i=1; i<strs.size(); ++i)
if (ch != strs[i][j]) return s;
s += ch;
}
return s;
}
};