#P3794. Extended Normal Order Sort

    ID: 2794 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>难度省选/NOI-数据结构Greater New York Regional 2008

Extended Normal Order Sort

题目描述

当对包含数字的字符串进行标准排序时,结果可能不符合预期。例如,"xyz100" 会排在 "xyz2" 前面。在某些应用(如文件列表)中,通常使用“正常顺序排序”,即把字符串中的连续数字视为一个整体,按其数值大小排序。例如,以下字符串按正常顺序排序为:
XYZ001, XYZ2, XYZ003, XYZ08, XYZ23, XYZ100, XYZQ

我们希望对正常顺序排序进行两点扩展:

  1. 大小写字母排序时视为相同(统一按大写字母处理)。
  2. 若加号(+)或减号(-)出现在数字前且不紧跟在数字后,则视为后续数字的一部分参与排序。
    例如:
  • "123+456+7890" 包含三个由加号分隔的数字。
  • "A+003" 等同于 "A3",其中加号视为数字的前缀。

为实现这种排序,需要编写一个比较函数,输入两个可打印的非空格 ASCII 字符串(ASCII 码 33-126),返回:

  • -1:第一个字符串应排在第二个之前
  • 0:两个字符串相等
  • 1:第一个字符串应排在第二个之后

输入

第一行包含整数 (N)((1 \leq N \leq 1000)),表示测试用例数。
每个测试用例占一行,包含两个用空格分隔的字符串 (s1) 和 (s2)。

输出

对每个测试用例,输出一行,格式为:
数据集编号 结果
其中结果为 -101,分别表示第一个字符串在前、相等、在后。

输入示例 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