置换一个字的字母 - 需要澄清

时间:2015-05-19 18:14:36

标签: java permutation

我正在寻找一种在java中置换单词的方法并遇到了这段代码。我实际上是自己学习它并且在理解代码的某些部分时遇到一些困难:

  1. 首先是什么类型的变量:used = new boolean[ in .length()]? 我从来没有见过这样的布尔变量声明。

  2. 此代码段功能背后的基本逻辑是什么?

    for(int i = 0; i< in .length(); ++ i){           if(used [i]){             继续;           }           out.append(in .charAt(i));           used [i] = true;           置换();           used [i] = false;           out.setLength(out.length() - 1);

  3. 原始计划

    public class Permutations {
      boolean[] used;
      StringBuffer out = new StringBuffer();
      String in ;
      public Permutations(String str) { in = str;
        used = new boolean[ in .length()];
      }
      public void permute() {
        if (out.length() == in .length()) {
          System.out.println(out);
          return;
        }
        for (int i = 0; i < in .length(); ++i) {
          if (used[i]) {
            continue;
          }
          out.append( in .charAt(i));
          used[i] = true;
          permute();
          used[i] = false;
          out.setLength(out.length() - 1);
        }
      }
    }
    

1 个答案:

答案 0 :(得分:0)

  1. 这是一系列布尔值。
  2. 找到未使用的字符(used[i]为false)后,将其附加到out,将其标记为已使用(used[i]=true)&amp;剩下的是permute()。完成后,将其标记为未使用(used[i]=false)&amp;删除附加到outout.setLength(out.length()-1))的字符,这样您的循环就可以继续查找未使用的字符。