【要求】请对一组单词进行判断,判断是否可以将这些单词在一定的顺序排列后,使得该顺序中各单词的首字母与前一单词的尾字母相同。
【例子输入】
4 //单词数目
fddr
gfrsf
askgo
orjug //单词
【输出】
yes
有点难啊
这个是今天看到的百度2016的实习面试题
可以使用 Javaarry的方法进行排序然后在判断
排序?排序的意义是什么
只手尝试的写了下,我写的代码只能实现按照成语接龙那样的排序,没加判断。而且只是凑巧在你给的参数下成功。 莫名的挫折感,我都大三了,居然还写不出来,伤心...
1 <script> 2 function same(){ 3 var l = arguments.length;//获取参数个数 4 var arr = []; //存放参数 5 var h = []; //用来存放每个参数的首位 6 var f = [];//存放尾部 7 var num = [];//存放最终结果 8 // 因为argument是维数组,所以没用for in 9 for(var i = 0;i<l;i++){ 10 arr.push(arguments[i]); 11 h.push(arguments[i].charAt(0)); 12 f.push(arguments[i].charAt(arguments[i].length-1)); 13 } 14 15 for(i in h){ 16 for(j in f){ 17 if(h[i] == f[j]){ 18 num.unshift(arr[i]); 19 } 20 } 21 } 22 23 for(i in arr){ 24 if(num.indexOf(arr[i])==-1){ 25 num.unshift(arr[i]); 26 } 27 } 28 console.log(num); 29 } 30 same('fddr','gfrsf','askgo','oriug'); 31 </script>
for(i in h){ for(j in f){ if(h[i] == f[j]){ num.unshift(arr[i]); } } }
这步没看明白意思
@jeyfang: 双重遍历,如果存在某个尾部等于另一个的头部,就把这个数据存放在结果数组里(因为索引相同,直接就可以取arr[i], unshift等同向队列里插入数据,这里应该通过判断,决定存放数据的顺序...当时懵了,不知道该怎么排序了)