题目:一个字符串相邻的字母在字母表中也是相邻的,那么该字符串称为好字符串。小红有一个想知道,输入一个字符串,删除字符串中的某些字母,使字符串是好字符串,且好字符串长度最长是多少?
举例:
输入:baab
输出:3
说明:去掉第二个或第三个a,可变为好字符串,此时好字符串的长度最长为3。
输入:abcfghiklmno
输出:5
说明:去掉abcfghi,可变为好字符串,此时好字符串的长度最长为5。
我写的代码和说明如下:
#include<bits/stdc++.h>
using namespace std;
int main() {
string s1;
char ss[100];
vector<char> s;
vector<int> vs;
cin >> s1;
int l,ii=1;
ss[0] = s1[0];
s.push_back(ss[0]);
for (unsigned int i = 1; i<s1.length(); i++)
{
if (s1[i] - s1[i - 1] != 0)
{
ss[ii] = s1[i];
s.push_back(ss[ii]);
ii++;
}
}
for (unsigned int i = 1; i<s.size(); i++)
{
if (!((s[i]-s[i - 1]==1)||(s[i-1] - s[i] == 1)))
{
vs.push_back(i);
}
}
vs.push_back(s.size());
l = vs[0];
for (unsigned int i = 1; i < vs.size(); i++)
{
l = max(l, vs[i] - vs[i - 1]);
}
cout << l << endl;
return 0;
}