3

次の配列があります

String[] arrKey  = new String[] {"A","B","C","D","E",......"Y","Z"};

配列を検索して、文字がどこにあるかのインデックスを教えてください。たとえば、文字「E」を検索したい場合、配列を検索すると「E」の位置が得られるため、インデックス位置 4 を取得する必要があります。これをループで実行したくありません。出来ますか?私は周りを見回しており、答えを見つけることができません。

4

8 に答える 8

16

これをループで実行したくありません。

コードまたはライブラリ コードのどこかにループが必要です。

はい、使用できます

int index = Arrays.asList(arrKey).indexOf("E");

...しかし、それはカバーの下でループします。

配列が最初からソートされていることがわかっている場合は、次を使用できます。

int index = Arrays.binarySearch(arrKey, "E");

それはより効率的になります-しかし、それはまだループです...

もちろん、配列が常にAZであることがわかっている場合は、ループなしで実行できますが、実際のケースはより一般化されていると思います...

于 2012-11-08T15:07:38.983 に答える
1

char文字列ではなく sを処理する必要がある場合は、 getNumericValueメソッドを参照してください。

より一般的な解決策が必要な場合はMap<String,Integer>、配列ではなく を使用することを検討してください。

于 2012-11-08T15:09:58.020 に答える
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);
于 2016-12-13T17:28:24.727 に答える
0

indexOfを使用する

Java-配列内の要素の位置を取得します

于 2012-11-08T15:08:38.023 に答える
0

indexOf を使用する

   return arrKey.get(arrKey.indexOf("E"));
于 2012-11-08T15:14:22.047 に答える
0

インデックスを計算できるため、この配列(または同様の配列)があると仮定した場合にのみ可能です。

String s = "E";
int index = s.charAt(0) - 'E'; // == 4
于 2012-11-08T15:16:08.067 に答える
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 配列から 1 番目の要素を削除し、関数を再度呼び出します

        index++;
        return find(str);
      }
    }
    
    console.log("Found",find(arr));
    console.log("at Index:",index);
    console.log("Peace Out! XD");
于 2021-02-03T19:56:20.393 に答える
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]);

    }
}
}
于 2012-11-09T08:54:57.383 に答える