无法理解字符串排列 Java 代码

2023-12-30

我有这个工作代码可以打印字符串排列而无需重复,但无法理解它在逻辑上是如何工作的。任何建议都会非常有帮助。

private static void permutation(String input, String sofar) {
        if (input.equals("")) {
            System.out.println(count + " " + sofar);
            count++;
        }
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (input.indexOf(c, i + 1) != -1)
                continue;
            permutation(input.substring(0, i) + input.substring(i + 1), sofar+c);
        }
    }

函数调用:

String input = "ABBCD";
permutation(input, "");

 for (int i = 0; i < input.length(); i++) {

上面的 for 循环很神奇

输入ABCD

迭代

输入:BCD 到目前为止:A .... 递归继续

输入:ACD 到目前为止:B ....

输入:AND软:C ....

输入:ABC 到目前为止:D .....

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法理解字符串排列 Java 代码 的相关文章

随机推荐

  • 在 Firebase 托管上提供 gzip 压缩文件

    我对使用 Firebase 托管提供 gzipped html css js 文件感兴趣 我尝试在 firebase json 中设置 Content Encoding 标头 但在部署时出错 据称 您可以设置的唯一标头包括 Cache Co
  • 为什么我要 std::move std::shared_ptr?

    我一直在寻找铿锵源码 https clang llvm org doxygen CompilerInstance 8cpp source html l00069我发现了这个片段 void CompilerInstance setInvoca
  • 将汇编 NASM 代码链接到 GCC

    我在编译汇编代码 nasm 时遇到问题 在 Linux elf32 上 使用 g 编译后它不会失败 但是当我尝试使用 i686 w64 mingw32 g 对于 Win32 构建它时 它失败了 我的 build sh 脚本 bin bash
  • 组合两个具有重叠范围的数据框并计算按类别分组的重叠

    建立在这个答案 https stackoverflow com questions 58570888 combine two dataframes based on ranges which may partially overlap us
  • 为什么方括号内的点不匹配任何字符?

    为什么这个 Java正则表达式与我的不匹配 foo 文本 同时 完美匹配 已测试here http www regexplanet com advanced java index html 相当于逃避 点 字符 即 一旦角色出现在字符类 h
  • if 语句摆脱: if 中的错误:参数长度为零

    The idea 根据selectizeInput 输入 我想显示数据框中的一行数据 然而 某些变量只有在其值不存在时才会显示 FALSE selectizeInput 包括一个占位符提示 这是非常理想的 问题 我开发的代码实际上可以工作
  • 无法登录oracle系统账户

    我最近安装了oracle 12c 无法访问系统本地生成的连接 Ora 01017 错误 尽管我知道它是正确的 因为我更改了密码 无论如何 stackoverflow 上的其他人将我重定向到此https iwikte wordpress co
  • 用于查找 git 分支上创建的所有 TODO 注释的脚本?

    我有一个已经变得相当大的功能分支 我们的代码中有相当多挥之不去的 TODO 注释 但我想找到在尚未合并到 master 的提交上添加到代码中的所有 TODO 尚未删除 我该怎么办呢 您可以简单地将您的分支与 master 进行比较 并在输出
  • 在命令行 Dart 应用程序中清除终端屏幕

    这个不起作用 在 Windows 的 Cmd Box 中 import dart io void main print Hello World Process start cls runInShell true then process s
  • Dart 中的 patch 关键字有什么作用?

    有人可以解释一下 patch 关键字的作用吗 例如 在math patch dart I see patch num pow num x num exponent gt MathNatives pow x exponent patch do
  • 向 ggplot 条形图添加标签

    我想做一个黑色轮廓的条形图 条形内有百分比 这可以从 qplot 中实现吗 我得到了显示的百分比 但它们与特定的条形不一致 软件包 ggplot2 重塑 x lt data frame filename c file1 file2 file
  • Symfony2 JSON 响应返回奇怪的 UTF 字符

    这是我的控制器方法 public function sendjsonAction message this gt getDoctrine gt getRepository AcmeStoreBundle Message gt findAll
  • 不明确的隐式值是我们想让错误存在于编译时的唯一方法吗

    trait Foo trait Bar extends Foo def doStuff T lt Foo x T implicit ev T Foo x doStuff new Foo ambiguous implicit value do
  • 如何在 IE 中翻转网站? (4月1日)

    我们正在办公室进行 4 月 1 日的恶作剧 并希望明天将我们的公司网站翻转几个小时 我的补丁在任何地方都有效 但在 IE 中无效 任何人都可以帮忙吗 尝试这个 http msdn microsoft com en us library ms
  • 非负集减法

    这适用于任何语言 但我会在节点中实现它 我有一组整数 以及一个需要从该组总和中减去的值 4 5 6 7 8 25 如果我们均匀地减去每个数字 我们会得到 1 0 1 2 3 但是 我不希望任何小于 0 的数字 因此 如果我编写一个算法来执行
  • Rails 生成 has_many 关联

    有没有办法使用以下方法为列生成 has many 关联Rails generate scaffold控制台中的命令 I know belongs to可用并且有用例references但不确定has many 没有用于 a 的列has ma
  • 粘页脚失败

    我正在尝试使页脚正确 但遇到问题 我能够将页脚保持在页面底部 但很快意识到当窗口变小时 它最终会覆盖内容 我可以通过取消position absolute来解决这个问题 但是如果我这样做 页脚将不再停留在页面底部 我已经尝试了很多不同的方法
  • MATLAB 中冒号运算的组合

    我有一个关于 MATLAB 中冒号运算符和向量扩展的问题 我的问题是理解以下代码行如何扩展 以便能够将其用于其他序列 MATLAB 代码行是 a 1 2 5 1 4 7 注意a扩展前未定义 这返回向量 a 1 0 3 0 7 我知道冒号运算
  • WinForms 拖放中的 e.Data.GetData 转换问题

    我试图在程序的两个实例之间进行拖放 但是当我尝试将数据转换为我的类型时 它会抛出无效的转换异常 这是代码 protected virtual void GetDropIEntities DragEventArgs e foreach str
  • 无法理解字符串排列 Java 代码

    我有这个工作代码可以打印字符串排列而无需重复 但无法理解它在逻辑上是如何工作的 任何建议都会非常有帮助 private static void permutation String input String sofar if input e