c++ - 生成按字典顺序大于输入的字符串

标签 c++ string c++-standard-library

给定一个输入字符串A ,有没有简洁的方法来生成字符串B按字典顺序大于 A ,即A < B == true

我的原始解决方案是:

B = A;
++B.back();

但一般来说这是行不通的,因为:

  1. A可能为空
  2. A 的最后一个字符可能接近环绕,在这种情况下,结果字符将具有较小的值,即 B < A .
  3. 每次添加额外的字符都是一种浪费,并且会很快导致不合理的大字符串。

所以我想知道是否有一个标准库函数可以在这里帮助我,或者是否有一个策略可以在我想从任意字符串开始时很好地扩展。

最佳答案

您可以将 A 复制到 B,然后查看最终的字符。如果最后一个字符不是您范围内的最后一个字符,那么您只需将其加一即可。

否则你可以查看last-1、last-2、last-3。如果到达字符列表的前面,则追加到长度。

关于c++ - 生成按字典顺序大于输入的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69607484/

相关文章:

c++ - 通过分解掩码进行二维卷积

与 Qt 4 (QtQuick 1.x) 和 Qt 5 (QtQuick 2.x) 兼容的 C++/QML 项目

c++ - 从 ‘std::exponential_distribution<double> (*)(double)’ 到 ‘std::exponential_distribution<double>*' 的参数没有已知的转换

c++ - 为什么在全局范围和命名空间 std 中都定义了 size_t?

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

c++ - MS Visual C++ 运行时库 - 有什么用?

python - 连接两行,如果它们不为空

C# 从字符串解析 Vector2

python - 将 pandas 中的 float 转换为字符串时精度损失

c++ - 在 C++11 中将 std::vector 移动到 std::deque