系列文章目录
前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
描述
给定一个长度为 n 的字符串数组 strs ,请找到一种拼接顺序,使得数组中所有的字符串拼接起来组成的字符串是所有拼接方案中字典序最小的,并返回这个拼接后的字符串。
import java.util.*;
public class Solution {
/**
*
* @param strs string字符串一维数组 the strings
* @return string字符串
*/
public String minString (String[] strs) {
if(strs == null || strs.length < 1) {
return null;
}
// 重载比较函数
PriorityQueue<String> queue = new PriorityQueue<>(new Comparator<String>() {
public int compare(String s1, String s2) {
// 保证 s1 + s2 > s2 + s1 时,返回值大于0,否则返回值小于0
// 保证queue中越靠近队头的元素,字典序越小
return (s1 + s2).compareTo(s2 + s1);
}
});
// 放入队列中排好序
for(String str : strs) {
queue.offer(str);
}
StringBuilder res = new StringBuilder();
// 重新从队列中获取
while(queue.size() > 0) {
res.append(queue.poll());
}
return res.toString();
}
}