按字典规则比较字符串大小(暴力枚举)

描述

按照字典规则比较两个英文字符串的大小,基本规则如下:

(1)字符串左对齐比较

(2)字母无大小写对应关系时忽略大小写,比如'B'不仅大于'A',也大于'a'

(3)字母有大小写对应关系时,大写小于小写,比如'A'小于'a'

(4)字符串中只有大小写字母和空格,空格小于任何字母

例如:"aBc"<"abc","abcdef"<"abD","Abcd"<"abc"

格式

输入格式

输入是两行,每行一个字符串,长度均小于1000

输出格式

输出一个整数,表示这两个字符串比较大小的结果。如果第一个小于第二个,输出-1;
如果第一个大于第二个,输出1;相等则输出0。

样例

输入样例

your
you

输出样例

1

限制

时间限制:100 ms

内存限制:8192 KB

#include <bits/stdc++.h>
using namespace std;

int main(){
	string s1, s2;
	getline(cin, s1);
	getline(cin, s2);
	int n1 = s1.length();
	int n2 = s2.length();
	int flag = 0;
	int num, tmp;
	if (n1 < n2) {
		num = n1;
	} else {
		num = n2;
	}
	for (int i=0; i<num; i++) {
		if (s1[i]>=65 && s1[i]<=90) {
			if (s2[i]>=65 && s2[i]<=90) {
				if (s1[i] > s2[i]) {
					flag = 1;
					break;
				} else if (s1[i] < s2[i]){
					flag = -1;
					break;
				}				
			} else if (s2[i]>=97 && s2[i]<=122) {
				if (s2[i]-s1[i] == 32){
					flag = -1;
					break;
				} else {
					tmp = s1[i] + 32;
					if (tmp > s2[i]) {
						flag = 1;
					} else {
						flag = -1;
					}
					break;
				}
			} else {
				flag = 1;
				break;
			}
		} else if (s1[i]>=97 && s1[i]<=122){
			if (s2[i]>=97 && s2[i]<=122) {
				if (s1[i] > s2[i]) {
					flag = 1;
					break;
				} else if (s1[i] < s2[i]) {
					flag = -1;
					break;
				}
			} else if (s2[i]>=65 && s2[i]<=90) {
				if (s1[i]-s2[i] == 32) {
					flag = 1;
					break;
				} else {
					tmp = s2[i] + 32;
					if (tmp > s1[i]) {
						flag = -1;
					} else {
						flag = 1;
					}
					break;
				}
			} else {
				flag = -1;
				break;
			}
		} else {
			if (s1[i] == s2[i]){
				flag = 0;
			} else if (s1[i] > s2[i]) {
				flag = 1;
				break;
			} else {
				flag = -1;
				break;
			}
		}

	}
	if (flag == 0 && n1>n2) {
		printf ("1");
		return 0;
	} else if (flag == 0 && n1<n2) {
		printf ("-1");
		return 0;
	}
	printf ("%d", flag);
	
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章