#P3794. Extended Normal Order Sort
Extended Normal Order Sort
题目描述
当对包含数字的字符串进行标准排序时,结果可能不符合预期。例如,"xyz100" 会排在 "xyz2" 前面。在某些应用(如文件列表)中,通常使用“正常顺序排序”,即把字符串中的连续数字视为一个整体,按其数值大小排序。例如,以下字符串按正常顺序排序为:
XYZ001, XYZ2, XYZ003, XYZ08, XYZ23, XYZ100, XYZQ
我们希望对正常顺序排序进行两点扩展:
- 大小写字母排序时视为相同(统一按大写字母处理)。
- 若加号(+)或减号(-)出现在数字前且不紧跟在数字后,则视为后续数字的一部分参与排序。
例如:
- "123+456+7890" 包含三个由加号分隔的数字。
- "A+003" 等同于 "A3",其中加号视为数字的前缀。
为实现这种排序,需要编写一个比较函数,输入两个可打印的非空格 ASCII 字符串(ASCII 码 33-126),返回:
- -1:第一个字符串应排在第二个之前
- 0:两个字符串相等
- 1:第一个字符串应排在第二个之后
输入
第一行包含整数 (N)((1 \leq N \leq 1000)),表示测试用例数。
每个测试用例占一行,包含两个用空格分隔的字符串 (s1) 和 (s2)。
输出
对每个测试用例,输出一行,格式为:
数据集编号 结果
其中结果为 -1、0 或 1,分别表示第一个字符串在前、相等、在后。
输入示例 1
5
x-3 X0001
123-456-7890 123+456+7890
xYz000123J XyZ+123j
#$%^&*[]- abcdefgh
Abc47jKL+00123 ABC+47jkL123
输出示例 1
1 -1
2 1
3 0
4 -1
5 0
来源
Greater New York Regional 2008