java - 我如何使用 java 8 基于先前的组合在两个字符之间生成连接?
问题描述
我正在解决一个问题,试图根据使用 java 8 的早期生成的组合来生成两个字符之间的所有可能组合
例如 :
private static final String LETTER_RANGE = "abcdefghijklmnopqrstuvwxz";
from this letter rang I want to extract all differents combine between two chars XX
for example :
zz,zx,zw....za
xz,xx,xw....xa
..,..,..,..,..
az,ax,aw... aa
My problem is I need to generate those combination at runtime based on previous combine :
String value = generate("zx") // this should return 'zw'
任何人都可以帮助我了解如何使用 java 8 循环、流、字符串来做到这一点提前谢谢
解决方案
您可以使用简单的字符算术。因为char
s 可以递增和比较:
final List<String> permutations = new ArrayList<>(26 * 26);
for (char[] array = {'a', 'a'}; array[0] <= 'z'; array[0]++) {
for (array[1] = 'a'; array[1] <= 'z'; array[1]++) {
permutations.add(new String(array));
}
}
这段代码创建了介于a
和之间的所有字符的每个组合,z
并将它们添加到List
.
这是可能的,因为在 ASCII 中a
(97) 的字符值小于z
(122) 中的字符值。
我还使用了一些优化,例如使用array
内部的for-loop
来保存 2 个字符的当前组合。然后这个数组也可以直接用于创建一个新字符串,使用字符串构造函数:String(char[])
。
推荐阅读
- c++ - 我有点问题,我似乎可以理解这个错误
- java - 如何在同一个引用中设置不同的值
- cefsharp - 允许用户使用 cefsharp 浏览器使用鼠标滚轮进行缩放
- powershell - 在 Invoke-Command -Session/ComputerName 中使用 Get-FileHash 时访问被拒绝
- json - 在数组或对象中选择
- azure-devops - 切换现有组织以使用新域名 URL
- publish-subscribe - 接收消息 ID(未来)是否表明消息是在 PubSub 中发送的?
- amazon-web-services - AWS Step Function 可以描述这种数据流吗?
- string - 在 Pascal 中给出字符串类型时出错
- c# - Visual Studio:cs8300“遇到合并冲突标记”的含义?