編寫(xiě)一個(gè)函數(shù)來(lái)查找字符串?dāng)?shù)組中的最長(zhǎng)公共前綴。如果不存在公共前綴,返回空字符串 ""。
輸入: ["flower","flow","flight"]
輸出: "fl"
這次大概是我第一次,比較順利的coding出來(lái)的題目。
但是被string的一個(gè)陌生語(yǔ)法坑了一個(gè)小時(shí)
先上代碼
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int n = strs.size();
string maxL;
char s = '\0';
if(n == 0) return "";
if(n == 1) return strs[0];
for(auto c : strs[0])
{
for(int i = 1; i < n; i++)
{
if(strs[i].empty()) {s='\0'; break;}
s = strs[i][0];
if(s != c) {s='\0'; break;}
else strs[i].erase(0,1);
}
if(s != '\0' && c == s)
{
maxL += s;
}
else
break;
}
return maxL;
}
};
主要是string.erase()函數(shù)的用法
#include <iostream>
#include <string>
int main ()
{
std::string str ("This is an example sentence.");
std::cout << str << '\n';
// "This is an example sentence."
str.erase (10,8); // ^^^^^^^^
std::cout << str << '\n';
// "This is an sentence."
str.erase (str.begin()+9); // ^
std::cout << str << '\n';
// "This is a sentence."
str.erase (str.begin()+5, str.end()-9); // ^^^^^
std::cout << str << '\n';
// "This sentence."
return 0;
}
如果()中間放兩個(gè)參數(shù),就是刪除中間一段;如果只放一個(gè),就是刪除該數(shù)字往后的所有。
我的問(wèn)題是沒(méi)注意這個(gè)語(yǔ)法的使用規(guī)則,想刪除第一個(gè)字符,結(jié)果寫(xiě)成str.erase(0),刪除了所有