描述
按照字典規則比較兩個英文字符串的大小,基本規則如下:
(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;
}