簡體   English   中英

在2D矩陣中查找對角線的特定單詞

[英]Find a specific word(diagonally) in 2D matrix

“給出一個2D字符數組和一個字符串。

查找特定字符串是否在矩陣中以對角線出現”。

private static boolean diagonalContains(char[][] grid,String word){
    int wordLength = word.length();
    char[] wordArray = word.toCharArray();
    for(int i =0, length = grid.length; i < length; i++){
        loop:for(int j =0, k = i, subLength = grid[i].length;
                j < subLength && k >= wordLength; j++, k--){
            for(int l =0; l < wordLength; l++){
                if(grid[j + l][k - l]!= wordArray[l]){
                    continue loop;
                }
                return true;
            }
        }
    }
}

該函數要求我返回值,盡管我這樣做了,所以我無法運行代碼。 我試圖將return語句放在代碼的不同區域中,但似乎沒有任何作用。 另外,我想知道代碼對於練習的目的是否有效?

基本上有兩個問題
1.如果返回類型不是void,則每個函數都應返回一些值。 在您的情況下,僅在滿足條件時才指定返回值。 您應該返回false,否則返回。

  private static boolean diagonalContains(char[][] grid,String word){
    int wordLength = word.length();
    char[] wordArray = word.toCharArray();
    for(int i =0, length = grid.length; i < length; i++){
      loop:for(int j =0, k = i, subLength = grid[i].length;
      j < subLength && k >= wordLength; j++, k--){
        for(int l =0; l < wordLength; l++){
          if(grid[j + l][k - l]!= wordArray[l]){
            continue loop;
          }
          return true;
        }
      }
    }
    return false;
  }
  1. 代碼似乎效率低下,邏輯似乎是錯誤的。 因此,請嘗試以下代碼。
import java.util.*;
    class WordDiagonal{
      public static void main(String[] args){

        char grid[][] = {{'a','b','c'},{'d','e','f'},{'g','h','i'}};

        if(checkDiagonalSubstring(grid,"aei")){
          System.out.println("Contains..");
        }else{
          System.out.println("Sorry..!");

        }

      }


      private static boolean checkDiagonalSubstring(char[][] grid, String word){

        String diagonalString = "";
        Integer i = 0;

        for(char[] charArray : grid){
          diagonalString += charArray[i++];
        }

        if(diagonalString.contains(word)){
          return true;
        }

        return false;
      }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM