【谷歌面試題】找出字串中只包含兩種字元的最長子串
給出一個字串,找出只包含2種字元的最長子串。如aabbcbbbadef,結果是bbcbbb。
string longestSubStrWith2Chars(const string &s)
{
int len = s.length();
// 空串返回空串
if(len == 0)
return "";
char ch1, ch2;
int ch1LastPos, ch2LastPos;
ch1 = s[0];
int i = 0;
while(i < len && s[i] == ch1)
++i;
ch1LastPos = i-1;
// 只有一個字元返回空串
if(i == len)
return "";
ch2 = s[i];
while(i < len && s[i] == ch2)
++i;
ch2LastPos = i-1;
int lenMax = i;
int startPosMax = 0;
int startPosCur = 0;
while(i < len)
{
if(s[i] == ch1)
ch1LastPos = i;
else if(s[i] == ch2)
ch2LastPos = i;
else
{
if(ch1LastPos < ch2LastPos)
{
ch1 = s[i];
startPosCur = ch1LastPos+1;
ch1LastPos = i;
}
else
{
ch2 = s[i];
startPosCur = ch2LastPos+1;
ch2LastPos = i;
}
}
if(i-startPosCur+1 > lenMax)
{
lenMax = i-startPosCur+1;
startPosMax = startPosCur;
}
++i;
}
return s.substr(startPosMax, lenMax);
}
相關文章
- 求字串中不含重複字元的最長子串字串字元
- 兩個字串的最長公共子串字串
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- 判斷字串中只包含或不包含某種字元的方法字串字元
- 【每日一題】無重複字元的最長子串每日一題字元
- 無重複字元的最長子串字元
- java無重複字元的最長子串Java字元
- 3 無重複字元的最長子串字元
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元
- Amazon面試題:尋找最長迴文子串面試題
- 3. 無重複字元的最長子串字元
- 最長不含重複字元的子字串字元字串
- poj 2774 求兩字串的最長公共子串 字尾陣列字串陣列
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- 最長子串
- LCR 016. 無重複字元的最長子串(中)字元
- LeetCode——無重複字元的最長子串LeetCode字元
- 演算法-無重複字元的最長子串演算法字元
- 演算法-兩最長迴文子串演算法
- 無重複字元的最長子串問題 (移動視窗法求解)字元
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- 演算法之字串——最長迴文子串演算法字串
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- #leetcode刷題之路3-無重複字元的最長子串LeetCode字元
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- leetcode-3無重複字元的最長子串LeetCode字元
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- 翻譯數字串;及最長迴文子串分析字串
- 每天一道演算法題:無重複字元的最長子串演算法字元
- 字串篇(python)—兩個字串的最長公共子序列字串Python
- lCS(最長公共子串)
- 今日面試題:最長迴文子串;及迴文分割分析面試題
- L2-008 最長對稱子串【最長迴文字串】字串
- Leetcode[字串] 3. 無重複字元的最長子串 10行極簡寫法!LeetCode字串字元
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元