自己写的一个findWords方法,传入一个单词testStr,根据二维数组横纵及斜线相邻字符找这个单词,若存在则返回true
public class test { public static void main(String[] args) { // TODO Auto-generated method stub //System.out.println(test.findWords("JD")); //System.out.println(test.findWords("YOF")); //System.out.println(test.findWords("DAU")); //System.out.println(test.findWords("QFAE")); System.out.println(test.findWords("ODERF")); System.out.println(test.findWords("UUQSE")); System.out.println(test.findWords("BZQ")); //System.out.println(test.findWords("XD")); } public static boolean findWords (String testStr){ char[][] grid = new char[][] { {'H','M','Z','Y','U','Y','J','X'}, {'S','X','A','H','E','A','O','D'}, {'C','U','B','N','V','A','D','F'}, {'O','Y','B','A','F','S','F','E'}, {'M','A','S','T','E','R','S','Q'}, {'P','R','D','G','E','Q','E','Q'}, {'U','R','K','D','U','O','Z','D'}, {'T','A','O','U','I','B','X','Y'} }; StringBuffer sb=new StringBuffer(testStr); sb.reverse(); //行 String row=""; String col=""; for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ row+=grid[i][j]; } for(int j=0;j<grid[0].length+1-testStr.length();j++){ if(row.substring(j, j+testStr.length()).equals(testStr)||row.substring(j, j+testStr.length()).equals(sb.toString())){ return true; } } row=""; } //列 for(int i=0;i<grid[0].length;i++){ for(int j=0;j<grid.length;j++){ col+=grid[j][i]; } for(int j=0;j<grid[0].length+1-testStr.length();j++){ if(col.substring(j, j+testStr.length()).equals(testStr)||col.substring(j, j+testStr.length()).equals(sb.toString())){ return true; } } col=""; } //对角线 String str1=""; String str2=""; //左斜线 i>j for(int i=1;i<grid.length;i++){ for(int j=0;j<=i;j++){ str1+=grid[i-j][j]; } for(int j=0;j<str1.length()+1-testStr.length();j++){ if(str1.substring(j, j+testStr.length()).equals(testStr)||str1.substring(j, j+testStr.length()).equals(sb.toString())){ return true; } } str1=""; } for(int i=0;i<grid.length-1;i++){ for(int j=0;j<=grid.length-i-1;j++){ str1+=grid[i+j][j]; } for(int j=0;j<str1.length()+1-testStr.length();j++){ if(str1.substring(j, j+testStr.length()).equals(testStr)||str1.substring(j, j+testStr.length()).equals(sb.toString())){ return true; } } str1=""; } //右斜线 for(int i=1;i<grid.length;i++){ for(int j=0;j<=i;j++){ str2+=grid[i-j][grid.length-j-1]; } for(int j=0;j<str2.length()+1-testStr.length();j++){ if(str2.substring(j, j+testStr.length()).equals(testStr)||str2.substring(j, j+testStr.length()).equals(sb.toString())){ return true; } } str2=""; } for(int i=0;i<grid.length-1;i++){ for(int j=0;j<grid.length-i;j++){ str2+=grid[i+j][grid.length-j-1]; } for(int j=0;j<str2.length()+1-testStr.length();j++){ if(str2.substring(j, j+testStr.length()).equals(testStr)||str2.substring(j, j+testStr.length()).equals(sb.toString())){ return true; } } str2=""; } return false; } }