[英]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;
}
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.