比较含有数字和字母的字符串

题目:https://codeforces.com/contest/1191/problem/B

1.利用结构体
strut T{
int a;
char c;
}q[100];
int cmp(T.x,T.y)
return x.a<y.a;

2.分别读入数字字母。
int a1,a2,a3;
char s1,s2,s3;
scanf("%d%c%d%c%d%c")//适用于字符串长度短
直接比较a1,a2,a3

3.直接读入字符串,作交换
#include<bits/stdc++.h>
using namespace std;
int main() {
	int ans=2;
	string s1,s2,s3;
	cin>>s1>>s2>>s3;
	if(s1[0]>s2[0])swap(s1,s2);
	if(s1[0]>s3[0])swap(s1,s3);
	if(s2[0]>s3[0])swap(s2,s3);
	if(s1[0]>s2[0])swap(s1,s2);
	if(s1[0]>s3[0])swap(s1,s3);
	if(s2[0]>s3[0])swap(s2,s3);
	if(s1= =s2 && s2= =s3)ans=0;
	if(s1= =s2 || s2==s3 || s1= =s3)ans=min(ans,1);
	if(s1[1]==s2[1] && s2[1]==s3[1] && s2[0]-s1[0]==1 && s3[0]-s2[0]==1)ans=0;
	if((s1[1]==s2[1] && s2[0]-s1[0]<=2) || (s1[1]==s3[1] && s3[0]-s1[0]<=2) || (s2[1]==s3[1] && s3[0]-s2[0]<=2))ans=min(ans,1);
	cout<<ans;
}
4.字符和数字重新赋给新的数组
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
#define ll long long 
string s1,s2,s3;
int a[10];
char c[10];
int main()
{
	cin>>s1>>s2>>s3;
	a[1]=s1[0]-'0';//通常 - ‘0’,都是把一个字符类型的数字转换为整形的数字,例如3-0’ 对应的ASCLL码就是 51-48 ,结果是3
	a[2]=s2[0]-'0';
	a[3]=s3[0]-'0';
	c[1]=s1[1];
    c[2]=s2[1];
    c[3]=s3[1];
    int ans1,ans2;
    if(a[1]==a[2]&&a[2]==a[3]&&c[1]==c[2]&&c[2]==c[3]) ans1=0;
    else if( (a[1]= =a[2]&&c[1]= =c[2]) || (a[2]= =a[3]&&c[2]= =c[3]) ||(a[1]= =a[3]&&c[1]= =c[3]) ) ans1=1;
    else ans1=2;
    //321 312 132 123
    if(a[2]>a[3]) 
    {
    	swap(a[2],a[3]);
    	swap(c[2],c[3]);
	}
	 if(a[1]>a[2]) 
    {
    	swap(a[1],a[2]);
    	swap(c[1],c[2]);
	}
	 if(a[2]>a[3]) 
    {
    	swap(a[2],a[3]);
    	swap(c[2],c[3]);
	}
	//cout<<a[1]<<a[2]<<a[3]<<endl;
    //cout<<c[1]<<c[2]<<c[3]<<endl;
	if(a[2]= =(a[1]+1)&&a[3]= =(a[2]+1)&&c[1]==c[2]&&c[2]==c[3]) ans2=0;
	else if( (a[2]==a[1]+1&&c[2]==c[1])||(a[3]==a[2]+1&&c[2]==c[3])|| (a[2]==a[1]+2&&c[2]==c[1])||(a[3]==a[2]+2&&c[2]==c[3]) ||(a[3]==a[1]+2&&c[1]==c[3]) ||(a[3]==a[1]+1&&c[1]==c[3])) 
    ans2=1;
    else ans2=2;
    printf("%d",min(ans1,ans2));
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值