关注
/* 题目:判断给定的字符串组, 将字符串排列后,是否存在一种排列,使字符串能够连成一串。
* 即前一个字符串的最后一个字符,等于后一个字符串的第一个字符。
* 如:["abcd","def","fgh","hij"]满足要求
* ["abcd","def","ggh","hij"]不满足要求
* 思路:典型的全排列问题
* 将字符串进行全排列,对每一种排列判断是否满足要求
* 参考:
* 递归解决全排列生成算法 http://blog.csdn.net/xiazdong/article/details/7986015
*/
//pass
public class WordListOrder {
public static int canArrangeWords(String arr[]) {
boolean found = perm(arr, 0, arr.length - 1);
if (found) {
return 1;
} else {
return - 1;
}
}
public static boolean perm(String arr[], int begin, int end) {
if (begin == end) {
if (check(arr)) {//判断是否满足要求
return true;
} else {
return false;
}
} else {
boolean found = false;
for (int i = begin; i <= end; i++) {
swap(arr, begin, i);
found = perm(arr, begin + 1, end);
if (found) {//符合要求直接退出
break;
}
swap(arr, begin, i);
}
return found;
}
}
public static void swap(String[] arr, int x, int y) {
String temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
//判断是否符合要求,即前一个字符串的最后一个字符等于当前字符串的第一个字符
public static boolean check(String[] arr) {
for (int i = 1; i < arr.length; i++) {
if (arr[i].charAt(0) != arr[i - 1].charAt(arr[i - 1].length() - 1)) {
return false;
}
}
return true;
}
// public static void main(String args[]) {
// String[] arr = new String[]{"abcd","defg","ghij","okl"};
// int result = canArrangeWords(arr);
// System.out.println(result);
// }
}
查看原帖
点赞 评论
相关推荐
10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
173233次浏览 2923人参与
# 找工作,行业重要还是岗位重要? #
85394次浏览 1691人参与
# 职场上哪些行为很加分? #
307034次浏览 3455人参与
# 大家每天通勤多久? #
69911次浏览 445人参与
# 实习的内耗时刻 #
211293次浏览 1542人参与
# 你面试体验感最差/最好的公司 #
18026次浏览 297人参与
# 一人说一个提前实习的好处 #
10944次浏览 206人参与
# 今年你最想重开的一场面试是? #
4199次浏览 70人参与
# 秋招落幕,你是He or Be #
12494次浏览 245人参与
# 互联网行业现在还值得去吗 #
46931次浏览 351人参与
# 实习没事做是福还是祸? #
16947次浏览 258人参与
# 面试吐槽bot #
165026次浏览 814人参与
# 重来一次,你会对开始求职的自己说 #
6168次浏览 155人参与
# 反问环节如何提问 #
126392次浏览 2664人参与
# 礼物开箱Plog #
701次浏览 24人参与
# 工作中听到最受打击的一句话 #
6759次浏览 117人参与
# 团建是“福利”还是是 “渡劫” #
7281次浏览 150人参与
# 我的第一份实习怎么找的 #
208594次浏览 1827人参与
# 比亚迪工作体验 #
74763次浏览 281人参与
# 大家实习每天都在干啥 #
106550次浏览 581人参与