Scala中补全图环字符串输出指定范围缺失行的实现问题
实现方案
核心思路是先构建序号到完整行的映射,直接按序号顺序遍历生成结果,避免插入和排序操作,实现更简洁高效。
完整代码实现
// 1. 预处理现有列表,构建 序号->完整行 的映射 val lineMap = list_result .filter(_.nonEmpty) // 过滤可能存在的空行 .map { line => val idx = line.takeWhile(_ != ':').toInt idx -> line } .toMap // 2. 指定目标最大序号(示例为90,可按需修改) val maxValue = 90 // 3. 按顺序生成补全后的结果列表 val filledResult = (0 to maxValue).map { idx => lineMap.getOrElse(idx, s"$idx:") }.toList // 4. 若需要转回换行分隔的字符串,直接调用mkString即可 val resultStr = filledResult.mkString("\n")
补充说明
- 如果需要统一所有行末尾补分号,可以调整取值逻辑:
lineMap.get(idx) match { case Some(line) if line.endsWith(";") => line case Some(line) => s"$line;" case None => s"$idx:" } - 该方案时间复杂度为O(n + maxValue),其中n是原有列表长度,相比插入排序的方案性能更稳定,尤其适合maxValue量级不大的场景。
内容的提问来源于stack exchange,提问作者Michael Qiao
相关产品推荐
相关产品推荐

