按字典規則比較字符串大小(暴力枚舉)

描述

按照字典規則比較兩個英文字符串的大小,基本規則如下:

(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;
}

 

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