当前位置: 首页 > 编程笔记 >

使用Java中的ArrayList打印字符串的所有排列

郝哲茂
2023-03-14
本文向大家介绍使用Java中的ArrayList打印字符串的所有排列,包括了使用Java中的ArrayList打印字符串的所有排列的使用技巧和注意事项,需要的朋友参考一下

在这个问题中,我们给了一个大小为n的字符串,我们必须打印该字符串的所有排列。但是这一次我们必须使用ArrayList打印此排列。

让我们举个例子来了解这个问题-

输入:字符串=“ XYZ”

输出: XYZ,XZY,YXZ,YZX,ZXY,ZYX

为了解决这个问题,我们将生成字符串字符的所有排列。我们将使用递归函数并返回arrayList。

以下是该算法的ArrayList实现:

示例

import java.util.ArrayList;
public class Main{
   static void printArrayList(ArrayList<String> combo) {
      combo.remove("");
      for (int i = 0; i < combo.size(); i++)
      System.out.print(combo.get(i)+"\t");
   }
   public static ArrayList<String> generatePermutation(String str) {
      if (str.length() == 0) {
         ArrayList<String> empty = new ArrayList<>();
         empty.add("");
         return empty;
      }
      char ch = str.charAt(0);
      String subStr = str.substring(1);
      ArrayList<String> lastCombination = generatePermutation(subStr);
      ArrayList<String> newCombination = new ArrayList<>();
      for (String val : lastCombination) {
      for (int i = 0; i <= val.length(); i++) {
            newCombination.add(val.substring(0, i) + ch + val.substring(i));
         }
       }
      return newCombination;
    }
   public static void main(String[] args) {
      String str = "NOPQ";
      System.out.println("字符串的排列是:");
      printArrayList(generatePermutation(str));
   }
}

输出结果

字符串的排列是:
NOPQ ONPQ OPNQ OPQN NPOQ PNOQ
PONQ POQN NPQO PNQO PQNO
PQON NOQP ONQP OQNP OQPN
NQOP QNOP QONP QOPN NQPO
QNPO QPNO QPON
 类似资料:
  • 本文向大家介绍使用C ++中的ArrayList打印字符串的所有子序列,包括了使用C ++中的ArrayList打印字符串的所有子序列的使用技巧和注意事项,需要的朋友参考一下 在这个问题中,我们得到一个字符串,并且我们必须打印该字符串的所有子序列。子字符串是通过删除元素形成的。而且,字符串的顺序不应更改。 让我们举个例子来更好地理解问题- 为了解决这个问题,我们将找到所有子字符串,从冻结字符串的第

  • 本文向大家介绍打印给定字符串的所有排列,包括了打印给定字符串的所有排列的使用技巧和注意事项,需要的朋友参考一下 打印给定字符串的所有排列是回溯问题的一个示例。我们将减小子字符串的大小以解决子问题,然后再次回溯以从该部分获得另一个排列。 例如,如果字符串是ABC,则所有排列将是ABC,ACB,BAC,BCA,CAB,CBA。 该算法的复杂度为O(n!)。这是一个巨大的复杂性。当字符串大小增加时,需要

  • 我试图编写一个方法,使用递归打印字符串的所有排列。现在,我有这样的代码: 它打印出正确的结果,但我试图在不使用循环的情况下解决它,包括第4行中的循环。可能吗?如果是这样,你会如何解决?非常感谢。 我试图添加第三个名为index的参数,并在第5行的递归调用中写入index 1,但没有成功。我认为添加第三个参数是个好主意,我只是不知道如何使用它。

  • 我想获取ArrayList的每个元素并使用它来创建一个字符串: 包含与ArrayList和、、中的元素一样多的单词 将为每个单词打印ArrayList中的int值 为了更清楚,我想打印一个字符串,如下所示: 不幸的是,我只从ArrayList中获取最后一个整数的值,但“元素”字数是正确的,所以我的实际结果字符串如下所示: ArrayList只有4个元素: 要生成此错误字符串,我使用以下代码: 那么

  • 我想我需要删除字符0-31和127。 是否有一个函数或一段代码来高效地做到这一点?

  • 本文向大家介绍C语言实现输入一个字符串后打印出该字符串中字符的所有排列,包括了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,属于数学里的排列问题。是一个很实用的算法技巧。分享给大家供大家参考。具体实现方法如下: 例如输入字符串abc,则输出由字符a、b、c所能排列出来的

  • 问题内容: 在java中查找字符串的所有排列 问题答案: 在这篇文章中,我们将看到如何在 java 中找到 String 的所有排列。 我们将使用一种非常简单的方法来做到这一点。 取出String的第一个字符,递归地插入剩余String的排列的不同位置。 假设您将 String 作为ABC。 所以我们从 ABC 中取出 A 第一个字符 =A 和 RemainingString = BC 因为我们在

  • 问题内容: 我想我需要删除0-31和127字符, 是否有功能或一段代码可以有效地做到这一点。 问题答案: 7位ASCII? 如果您的Tardis刚好在1963年登陆,并且您只想要7位可打印的ASCII字符,则可以使用以下方法从0-31和127-255中删除所有内容: 它匹配0-31、127-255范围内的任何内容并将其删除。 8位扩展ASCII? 您掉进了热水浴缸计时机,而您又回到了八十年代。如果