题目
- 单词的压缩编码
给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。
例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。
对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。
那么成功对给定单词列表进行编码的最小字符串长度是多少呢?
示例:
输入: words = [“time”, “me”, “bell”]
输出: 10
说明: S = “time#bell#” , indexes = [0, 2, 5] 。
提示:
1 <= words.length <= 2000
1 <= words[i].length <= 7
每个单词都是小写字母 。
代码
class Solution {
public int minimumLengthEncoding(String[] words) {
int ans=0;
Arrays.sort(words, (w1,w2)->w2.length()-w1.length());//排序
String res="";
for(String s:words) {
if(!res.contains(s+'#')) {
res=res.concat(s+'#');
}
}
return ans=res.length();
}
}
//这题自己思路不对,就找了题解,
//大致思路就是 先将数组按照长度排序
//然后进行遍历判断,看结果字符串中是否包含有当前串 如果不含 就添加
//最后返回长度