百度笔试
第三题我的解法,可惜快交卷才有思路
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int search(string str1)
{
char minChar = str1[0], maxChar = str1[0];
char tmp = minChar;
int ans = 0;
for (int i=1; i<str1.size(); ++i)
{
if (str1[i] == tmp)
continue;
else if (str1[i] > tmp && tmp == maxChar)
{
tmp = str1[i];
maxChar = max(maxChar, str1[i]);
}
else if (str1[i] < tmp && tmp == minChar)
{
tmp = str1[i];
minChar = min(minChar, str1[i]);
}
else if (str1[i] > tmp)
{
if (str1[i] < maxChar)
{
ans += 2;
}
else
{
++ans;
}
maxChar = max(maxChar, str1[i]);
tmp = maxChar;
}
else
{
if (str1[1] > minChar)
{
ans += 2;
}
else
++ans;
minChar = min(minChar, str1[i]);
tmp = minChar;
}
}
if (tmp < maxChar)
++ans;
return ans;
}
int main()
{
string ss = "BACBA";
cout << search(ss) << endl;
return 0;
} 