【发布时间】:2019-11-23 20:17:20
【问题描述】:
早安,
我正在尝试打印某个字符串的所有变体。例如,我们有这个输入:AB0C0。第 3 和第 5 位的 0 应视为变量。可变字符是 1、2、3,将被放置在 0 的位置。这意味着,这些将是此输入的所有可能变化:
- AB1C1
- AB2C1
- AB3C1
- AB1C2
- AB1C3
- AB2C2
- AB2C3
- AB3C2
- AB3C3
这只是一个例子。在 5 个字符的长字符串中放置 1 到 5 个变量。我面临的问题是,无论输入中有多少变量,无论它们在哪里,它都应该生成所有变体。
Scanner scanner = new Scanner (System.in);
System.out.println("Enter the key consisting of 5 characters:");
String input = scanner.next();
String strOutput1 = input.replaceFirst("0","1");
String strOutput1A = input.replace("0","1");
String strOutput2 = input.replaceFirst("0","2");
String strOutput3 = input.replaceFirst("0","3");
String strOutput4 = input.replaceFirst("0","4");
String strOutput5 = input.replaceFirst("0","5");
System.out.println(strOutput1.toUpperCase());
System.out.println(strOutput1A.toUpperCase());
System.out.println(strOutput2.toUpperCase());
System.out.println(strOutput3.toUpperCase());
System.out.println(strOutput4.toUpperCase());
System.out.println(strOutput5.toUpperCase());
热烈欢迎任何建议。
【问题讨论】:
-
基于您的示例中分配了值 1,2 和 3 的变量是什么?因为字符串中的已知字符数是 3?即A、B、C?
-
@MarwaEldawy 0 是应从输入中检测到的变量。所以 A、B 和 C 是已知的,不应更改。再举个例子:A00BC,我们同样有 9 种不同的组合,分别是数字 1、2 和 3:A11BC、A12BC、A13BC、A21BC、A22BC、A23BC、A31BC、A32BC、A33BC。
-
我理解这个例子。我的问题是:如果我们有这样的字符串:A00BCDE。 00 应该取什么值? 1,2和3也?这个例子怎么样: A0000 ? 0000 应该取什么值?
-
或者你的意思是字符串总是包含 5 个字符,有 2 个变量?
-
@MarwaEldawy 总是有 5 个字符可以有 1 到 4 个零,需要用我们的值替换,它们总是 1、2、3。通过数学,我们得到两个变量3^2=9 组合,3 个变量我们得到 3^3=27 个组合,4 个变量我们得到 3^4=81 个组合。
标签: java string replace variations