You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改C++代码排除大写字母A-Z,调整字符序列生成顺序

修改方案:移除大写字母A-Z,生成0→9→a→z的序列

嘿,这个修改其实非常直观——核心就是控制生成序列的字符集,把A-Z的部分彻底删掉,你的序列生成逻辑完全依赖这个字符集,改完之后自然就不会出现大写字母了。下面分两种常见情况给你具体的修改方式:

1. 手动循环初始化字符集的情况

如果你的代码里是像这样手动往Chars向量里加字符:

vector<char> Chars;
// 原来的代码:添加0-9
for (char c = '0'; c <= '9'; ++c) Chars.push_back(c);
// 原来的代码:添加A-Z(这一段就是要删掉的部分!)
for (char c = 'A'; c <= 'Z'; ++c) Chars.push_back(c);
// 原来的代码:添加a-z
for (char c = 'a'; c <= 'z'; ++c) Chars.push_back(c);

直接把添加A-Z的那个for循环删掉就好,修改后变成:

vector<char> Chars;
// 保留0-9
for (char c = '0'; c <= '9'; ++c) Chars.push_back(c);
// 保留a-z
for (char c = 'a'; c <= 'z'; ++c) Chars.push_back(c);

2. 用字符串初始化字符集的情况

如果你的代码是通过字符串转成向量的方式初始化Chars,比如:

string charStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
vector<char> Chars(charStr.begin(), charStr.end());

那只需要把字符串里的大写字母段ABCDEFGHIJKLMNOPQRSTUVWXYZ删掉,修改成:

string charStr = "0123456789abcdefghijklmnopqrstuvwxyz";
vector<char> Chars(charStr.begin(), charStr.end());

额外说明:不需要改动生成逻辑

你不用担心字符集大小变化会影响后续的多字符序列生成——你的Crack函数里已经用n = Chars.size()动态获取了字符集的长度(修改后是10+26=36),后面的循环计算(比如N *=n)会自动适配新的字符集,完全不用改其他逻辑,直接运行就能得到0→9→a→z,再到00→zz的序列啦。

内容的提问来源于stack exchange,提问作者gastin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:54:36