题解:P10906 [蓝桥杯 2024 国 B] 合法密码
P10906[蓝桥杯 2024 国B] 合法密码
题目链接:P10906
题目大意
在给定的字符串中寻找符合要求的字符串,这些字符串需要满足以下两个要求:
- 长度大于等于
8 个字符,小于等于16 个字符。 - 必须包含至少
1 个数字字符和至少1 个符号字符。
样例分析
本题提交答案即可,即把正确的答案提交上去即可,不需要提交代码。
思路构建
很明显,一个由
这个代码其实很简单,从字符串第一个数开始,这个数保持不变,然后找出所有长度为 ans++,不满足则不加。
重复上面这个步骤直到还剩
代码展示
本题答案为
这里给出部分代码,仅供参考。
void solve()
{
string s;
cin >> s;
int n = s.size();
auto check = [&](string t) -> bool
{
bool fl = 0;
for(auto c : t)
if(isdigit(c))
fl = 1;
if(!fl) return false;
for(auto c : t)
{
if(isdigit(c) || isalpha(c)) continue;
return true;
}
return false;
};
int cnt = 0;
for(int i = 0; i < n; i ++)
{
for(int len = 8; len <= 16; len ++)
{
if(i + len - 1 >= n) break;
int l = i, r = i + len - 1;
string s1 = s.substr(i, len);
if(check(s1))
cnt ++;
}
}
cout << cnt << endl;
}
完结撒花
感谢您看到这里,如果您觉得有帮助麻烦您点个赞谢谢~