我有一个字符串形式的键,例如“security”,我想创建一个数组,显示字母表中每个字母的顺序,代替字母。因此,例如,对于单词“security”,该数组将为[5, 2, 1, 7, 4, 3, 6, 8]
(假设我不是从零开始)。
这是我尝试过的,但它没有输出我需要的东西:
String key = "Security";
key = key.toLowerCase();
String alphabet = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < key.length(); i++) {
System.out.print(alphabet.indexOf(key.charAt(i)) + " ");
}
输出:
18 4 2 20 17 8 19 24
顺便说一下,我没有把输出放在数组中,因为输出不是我想要的。
有什么建议吗?我相信这对大多数程序员来说都很容易,但我是Java编程的新手,所以对我来说很难。
答案 0 :(得分:2)
对alphabet
进行一些调整应该:
String key = "Security".toLowerCase();
String alphabet =
// Split the key into characters.
Arrays.stream(key.split(""))
// Sort it.
.sorted()
// Put it back together into a String again.
.collect(Collectors.joining());
for (int i = 0; i < key.length(); i++) {
System.out.print(alphabet.indexOf(key.charAt(i)) + 1 + " ");
}
答案 1 :(得分:1)
您可以通过将自己的单词转换为char数组,排序并返回String来简单地对自己的单词进行排序。
String key = "Security";
key = key.toLowerCase();
char[] charArray = key.toCharArray();
Arrays.sort(charArray);
key = new String(charArray);
答案 2 :(得分:0)
你可以从你的字符串中获取char数组,对它进行排序,并为string中的每个char找到sort char数组中的相应索引。
String key = "Security";
key = key.toLowerCase();
char letters[] = key.toCharArray();
Arrays.sort(letters); // 'c' 'e' 'i' 'r' 's' 't' 'u' 'y'
for (int i = 0; i < key.length(); i++) {
int index = Arrays.binarySearch(letters, key.charAt(i));
System.out.format("%d ", index + 1);
}