直接一个一个比较(在边界判断的时候出错了。。。。。。)
#include <bits/stdc++.h>
using namespace std;
string a;
string b;
//判断数字的函数
//数字串如何解决呢
bool judgeNum(int i){
if(a[i]>='0' && a[i] <= '9' && b[i]>='0' && b[i] <= '9' ){
//转换为数字
int suma = 0;
for(int j = i;j<=a.size();j++){
if(a[j]>='0' && a[j]<='9'){
suma = suma*10 + (a[j]-'0');
}
else{
break;
}
}
int sumb = 0;
for(int j = i;j<=b.size();j++){
if(b[j]>='0'&& b[j]<='9'){
sumb = sumb*10 + (b[j]-'0');
}
else{
break;
}
}
//if(a[i]>='0' && a[i] <= '9' && b[i]>='0' && b[i] <= '9' ){
//字符串转换为数字
if(suma<sumb){
cout<<"+"<<endl;
return true;
}
else if(suma > sumb){
cout<<"-"<<endl;
return true;
}
else if(suma == sumb){
if(i+1==a.size() && i+1<b.size()){
cout<<"+"<<endl;
return true;
}
else if(i+1==b.size() && i+1<a.size()){
cout<<"-"<<endl;
return true;
}
else{
judgeNum(i+1);
}
}
}
else{
return false;
}
}
bool judgeLetter(int i){
if((a[i]>='a' && a[i] <= 'z' || a[i]>='A' && a[i] <= 'Z')&& (b[i]>='a' && b[i] <= 'z' || b[i]>='A' && b[i] <= 'Z')){
if(a[i]<b[i]){
cout<<"+"<<endl;
return true;
}
else if(a[i]>b[i]){
cout<<"-"<<endl;
return true;
}
else if(a[i]==b[i]){
if(i+1==a.size() && i+1<b.size()){
cout<<"+"<<endl;
return true;
}
else if(i+1==b.size() && i+1<a.size()){
cout<<"-"<<endl;
return true;
}
else{
judgeLetter(i+1);
}
}
}
else{
return false;
}
}
int main()
{
ios::sync_with_stdio(0);
int n;
cin>>n;
cin>>a;//输入s0
while(n--){
cin>>b;
//cout<<"b的长度"<<b.size()<<endl;
//若果两字符串完全相等,直接判断然后执行下一个
if(a==b){
cout<<"+"<<endl;
continue;
}
//否则一个一个判断,最多不超过九个
for(int i=0;i<=8;i++){
//如果一个是数字一个不是
if((a[i]>='0' && a[i]<='9') && (b[i]<'0' || b[i]>'9')){//b不是数字
cout<<"+"<<endl;
break;
}
else if((a[i]<'0' || a[i]>'9') && (b[i]>='0' && b[i]<='9')){//a不是数字
cout<<"-"<<endl;
break;
}
//如果都是数字
else if(judgeNum(i)){
break;
}
else if(judgeLetter(i)){
break;
}
}
}
return 0;
}