Java中如何按指定数组顺序排序含子串的字符串数组?
解决方案
核心思路是通过建立名字到排序优先级的映射,快速定位每个全名的排序位置,实现高效排序。具体步骤如下:
- 构建优先级字典:将已排序的名字数组转换为「名字-索引」的字典,索引值就是该名字的排序优先级(索引越小,排序越靠前)。
- 提取排序键:从每个全名字符串中拆分出名字部分,用字典查找对应的优先级。
- 按优先级排序:以优先级为排序键,对全名数组进行排序。
代码示例(Python)
# 输入数据 sorted_name_list = ["Mike2", "Mike3", "Mike1"] full_name_list = ["Bush Mike1", "Clinton Mike2", "Trump Mike3"] # 构建名字到排序索引的映射 name_priority = {name: idx for idx, name in enumerate(sorted_name_list)} # 按优先级排序全名数组 sorted_full_names = sorted(full_name_list, key=lambda s: name_priority[s.split()[-1]]) # 输出结果 for item in sorted_full_names: print(item)
效率说明
- 构建字典的时间复杂度为O(n)(n是已排序名字数组的长度)。
- 排序操作的时间复杂度为O(m log m)(m是全名数组的长度)。
- 整体属于高效的线性对数级复杂度,适合处理大规模数据。
内容的提问来源于stack exchange,提问作者user18240702
相关产品推荐
相关产品推荐

