Java 夜话(1)
背景
今天上班时被问到一个问题,题目如下:
给定一个
Set<String>里面一些列关键字字符串,现要求,给定一个长度length,要求Set中的关键字组成一个用,分割的并且不超过给定长度的字符串,但,不算字数,每个关键词可以随意组合,每个关键词只能使用一次。例如:Set(String) = {“你好”, “世界”, “来玩”, “LOL”, “学习”, “天气好”, “明天下雨”},length = 5
其中一个正确的输出为 {“你好,世界”, “来玩,LOL”, “学习,天气好”, “明天下雨”},答案并不固定,只需要符合要求即可。
实现
我们需要记录下 , 的个数,使用 StringBuilder 来构造候选结果集元素,候选结果集元素是包含 , 的全部字符,我们只需要用候选结果集元素减去逗号的个数就能得到真正的字符长度,用此长度来与 length 比较即可。
此种方法并不是最优解,只是遍历了一遍 Set 集合,并没有主动寻找最优的字符串。
public List<String> m1(Set<String> keys, int length) { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
