首页 > 解决方案 > 我怎样才能被包容的Letters成?

问题描述

字符串输入="4,8,222cd,77,77A";

我对值进行了排序。例如,我对 [3-6] 范围内的 3、4、5、6 个连续值进行了排序。我已经以这种格式完成了连续数字“[]”,但我无法制作字母。排序列表不应被打乱。

标签: javaparsingcomparator

解决方案


一般的想法是首先扩展输入中的所有声明,然后对它们进行排序,然后再次发出它们,同时在遇到连续项目时压缩范围。

  1. 展开所有声明:571-573K(如果我理解正确的话)将展开为三个项目 571K、572K、573K。大多数简单的声明只是扩展到它们自己。

  2. 排序:您需要一个对数字和字母都敏感的排序函数。它可能必须分解输入字符串并以数字方式组合数字部分,但按字母顺序组合字母部分。

  3. Emit:遍历排序列表并发出每个项目;但是,如果下一个项目与当前项目相邻,则将其与当前项目合并。这可能需要您创建一个临时的输出列表,并延迟实际输出,直到您浏览完原始列表。


推荐阅读