首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

2014雅虎校园招聘:二维字符数组查寻Yahoo!(软件开发岗)

2013-09-29 
2014雅虎校园招聘:二维字符数组查找Yahoo!(软件开发岗)要求输入的单词的字符之间在数组里面是邻接关系例如

2014雅虎校园招聘:二维字符数组查找Yahoo!(软件开发岗)

要求输入的单词的字符之间在数组里面是邻接关系

例如 :输入二维字符矩阵如下:

              A   H  E   L

              K  M  O   L

              H  B  W   P

查找HELLOW明显可以找到,对应的坐标为(0,1)——>(0,2)——>(0,3)——>(1,3)——>(1,2)——>(2,2),相当于一笔画成HELLOW!

本题采用枚举法实现。动态查找每一位的邻接是否满足条件,适当的剪枝是必要的!


JAVA源码如下(没有对输入数据进行合法性的检查!):

package com;public class SearchWord {public static void main(String[] args) {String[] a = { "hello2rt", "orow -=!","xldpoiyx","uu!yuuzz" };System.out.println(isWord(a, "hello world!"));}public static boolean isWord(String[] matrix, String word) {boolean ok = false;for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length(); j++) {ok = dfs(0, matrix, word, i, j);if (ok) break;}if (ok) break;}return ok;}public static boolean dfs(int index, String[] matrix, String word, int i,int j) {if (index >= word.length())return false;if (!(i >= 0 && i < matrix.length && j >= 0 && j < matrix[i].length()))return false;char cur = word.charAt(index);if (cur == matrix[i].charAt(j) && (index + 1) == word.length())return true;if (cur == matrix[i].charAt(j)) {if (dfs(index + 1, matrix, word, i - 1, j))return true;if (dfs(index + 1, matrix, word, i + 1, j))return true;if (dfs(index + 1, matrix, word, i, j - 1))return true;if (dfs(index + 1, matrix, word, i, j + 1))return true;}return false;}}

转载时请注明来源:http://blog.csdn.net/ccfeng2008

1楼leo52479小时前
今天这个笔试题不会,正好看看大牛怎么做的
Re: ccfeng200817分钟前
回复leo5247n代码没有对已经访问过的节点用二维数组(或其他方式)标记,会有点问题,一般情况还好,原因题目也没说的很清楚。

热点排行