我有以下数组
String[] arrKey = new String[] {"A","B","C","D","E",......"Y","Z"};
我想搜索数组并给我一个字母所在的索引。 比方说,我想搜索字母“E”,当我搜索数组时,它应该给我“E”的位置,所以我应该得到索引位置4.我不想在循环中这样做。可能吗?我一直在四处寻找,但找不到答案。
答案 0 :(得分:16)
我不想在循环中这样做。
在某个地方必须有一个循环 - 在您的代码或库代码中。
所以是的,你可以使用
int index = Arrays.asList(arrKey).indexOf("E");
......但这将在幕后循环。
如果您知道阵列已经开始排序,可以使用:
int index = Arrays.binarySearch(arrKey, "E");
那会更有效率 - 但它仍然是一个循环......
当然,如果您知道您的阵列总是 AZ,那么可以在没有循环的情况下完成它 - 但我认为您的真实案例更为通用..
答案 1 :(得分:1)
如果您必须处理char
s而不是字符串,请查看getNumericValue方法。
如果你想要一个更通用的解决方案,你应该考虑使用Map<String,Integer>
而不是数组。
答案 2 :(得分:1)
这基本上是一个面试问题,测试你的递归技巧,这是你如何做到的。
private static <T> int findIndex(T[] items, T item, int index) {
if (items.length == index) {
return -1;
}
if (items[index].equals(item)) {
return index;
}
return findIndex(items, item, index+1);
}
以下是如何运行它
int val = findIndex(new String[]{"A","B","C"}, "C", 0);
答案 3 :(得分:0)
答案 4 :(得分:0)
使用indexOf
return arrKey.get(arrKey.indexOf("E"));
答案 5 :(得分:0)
只有你可以假设你有这个数组(或者一个类似的)才能计算索引。
String s = "E";
int index = s.charAt(0) - 'E'; // == 4
答案 6 :(得分:0)
这是我正在处理的代码。这就是我现在所拥有的。对我来说,练习JAVA并理解Ceaser Cipher只是一个练习。
public class CeaserCipher
{
public static void main (String [] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter test letters for Caesar cipher in capitals");
String input = keyboard.nextLine();
char[] strArray = input.toCharArray();
System.out.print("What is the key: ");
int key = keyboard.nextInt();
//String[] arrKey = new String[] {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
String c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char[] arrKey = c.toCharArray();
for (int i = 0; i < strArray.length ; i++){
char cipherValue = strArray[i];
int index = Arrays.binarySearch(arrKey, cipherValue);
int j = (key + index)%26;
System.out.print(arrKey[j]);
}
}
}
答案 7 :(得分:0)
您可以在这种情况下使用递归:
let arr = ["A","B","C","D","E","Y","Z"];
let index = 0;
function find(str){
if(str[0] === "E")
{
return str[0];
}
else {
str.shift();
<块引用>
//从str数组中移除第一个元素并再次调用该函数
index++;
return find(str);
}
}
console.log("Found",find(arr));
console.log("at Index:",index);
console.log("Peace Out! XD");