c++中的一个字符串处理的经典问题
大量的字符串准备输入,输入过程中需要检查是否有重复输入,有重复的话就要报警退出。
1.如果字符串全部是大小写敏感,或者大小写不敏感,如何处理?
例如,现在输入的字符串都是大小写敏感的:已经输入了ABC,接着输入abc,没有问题,但是再输入一个ABC,就要报警退出了。
2.如果输入的字符串是混合情况的,即有的是大小写敏感,有的是大小写不敏感,如何处理?
例如,输入了大小写敏感的ABC,接着输入大小写敏感的abc,没有问题,但是如果输入大小写不敏感的abc,就要报警退出。
再如,输入不敏感的abc,再输入大小写敏感的ABC,也要报警退出。
首先将字符串和大小写标识符组合成一个类。
第一种情况比较好处理,用新类的set来实现,并重载排序比较符。如果全部是大小写敏感的字符串输入,调用strcmp;如果全部是大小写不敏感的字符串输入,调用strcasecmp。
第二种情况如何处理?因为set的底层结构用的是平衡二叉树,所以无法支持这种包含复合情况的输入。哪位高人有好的算法?