首页 > 代码库 > 网格找单词
网格找单词
在一个网格中使用已知的单词表将所有出现在单词表中的单词都找出来
代码如下
//使用Java编写 import java.util.ArrayList; import java.util.TreeSet; public class 网格找单词 { //存储要找单词的集合 static TreeSet<String> ts=new TreeSet<String>(); //字母网格 static char[][] word={ {'t','h','i','s'}, {'w','a','t','s'}, {'o','a','h','g'}, {'f','g','d','t'} }; //用来添加一个个字母,组成单词 static StringBuilder sb=new StringBuilder(); //保存坐标信息 static StringBuilder sbCoor=new StringBuilder(); //保存已经找到的单词的坐标信息和单词 static ArrayList<String> CoorAndWord=new ArrayList<String>(); public static void main(String[] args){ //添加要找的单词 ts.add("that"); ts.add("this"); ts.add("two"); ts.add("fat"); for(int i=0;i<word.length;i++) for(int j=0;j<word[0].length;j++) for(int x=-1;x<=1;x++) for(int y=-1;y<=1;y++){ if(x==0 && y==0) continue; if(0<=i+x && 0<=j+y && i+x<word[0].length && j+y<word.length) findWord(i,j,x,y); //清空,从新用 sb=new StringBuilder(); sbCoor=new StringBuilder(); } //输出找到的结果 System.out.println(CoorAndWord); } public static void findWord(int bx,int by,int x,int y){ sb.append(word[bx][by]); sbCoor.append("("+bx+","+by+")"); if(ts.contains(sb.toString()))//如果要找的单词表包含sb的内容,就将坐标信息和单词保存起来 CoorAndWord.add(sbCoor.toString()+"-->"+sb.toString()); if(0<=bx+x && 0<=by+y && bx+x<word[0].length && by+y<word.length) findWord(bx+x,by+y,x,y); } }以上运行结果输出[(0,0)(0,1)(0,2)(0,3)-->this, (0,0)(1,0)(2,0)-->two, (3,0)(2,1)(1,2)-->fat, (3,3)(2,2)(1,1)(0,0)-->that]
网格找单词
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。