ปริศนาค้นหาคำ Java ใน Char Array

ฉันกำลังหาวิธีค้นหาคำในตารางตัวต่อคำศัพท์

ตัวอักษรถูกใส่ไว้ในเมทริกซ์ วิธีการควรพิมพ์แถวและคอลัมน์ที่พบตัวอักษรตัวแรกของคำและทิศทาง (n, s, e, w, ne, nw, se, sw) ที่รูปแบบเข้าไป

วิธีที่ฉันมีในปัจจุบันคือ:

public static String wordSearch(int r, int c, String letters, String search){
  int x[] = { -1, -1, -1, 0, 0, 1, 1, 1 };
  int y[] = { -1, 0, 1, -1, 1, -1, 0, 1 };
  char [][] puzzle = new char [r][c];
  int count = 0;
  for (int i = 0; i < r; i++){
     for (int j = 0; j < c; j++){
        puzzle[i][j] = letters.charAt(count);
        count++;
     }
  }
  int length = search.length();
  for (int dir = 0; dir < 8; dir++)
  {
     int k;
     int rd = r + x[dir]; 
     int cd = c + y[dir];

     for (k = 1; k < length; k++)
     {
        rd += x[dir]; 
        cd += y[dir];
     }
     if (k == length)
        return rd+ ", "+cd;
  }
  return "Not found";}

ปัญหาคือการหาวิธีคืนทิศทางของรูปแบบไปพร้อมกับตัวอักษรตัวแรกของคำ (ผ่านกรณีทดสอบเพียงกรณีเดียว) อย่างไรก็ตาม ฉันมั่นใจว่าวิธีการนี้สามารถบอกได้ว่าคำนั้นอยู่ในตารางหรือไม่


person Sinister    schedule 12.04.2018    source แหล่งที่มา


คำตอบ (1)


วิธีที่ตรงที่สุดคือการกำหนดคลาสที่รวบรวมข้อมูลทั้งหมดที่คุณต้องการส่งคืน ตัวอย่างเช่น:

public class Result {
    int row;
    int col;
    int direction;
}

จากนั้น หากคุณพบคำค้นหา ให้สร้างอินสแตนซ์ใหม่ของคลาสนี้แล้วส่งคืน หากไม่พบคำค้นหา ให้ส่งคืน null โปรดทราบว่าคุณจะต้องเปลี่ยนประเภทการส่งคืนวิธีการของคุณจาก String เป็น Result

ฉันจะไม่แสดงความคิดเห็นเกี่ยวกับตรรกะการตรวจจับของโค้ดปัจจุบันของคุณ นอกเหนือจากการสังเกตว่ามันไม่ได้ทดสอบสิ่งใดอย่างถูกต้อง นอกจากนี้ยังเสี่ยงต่อการขว้าง ArrayIndexOutOfBoundsException เนื่องจากคุณไม่ได้ตรวจสอบว่าคุณกำลังวิ่งออกจากขอบของปริศนาหรือไม่

หรือคุณสามารถเข้ารหัสทุกอย่างต่อไปเป็น String และส่งกลับสตริงสามองค์ประกอบ: return rd + ", " + rc + ", " + dir;

person Ted Hopp    schedule 12.04.2018