【蓝桥杯每日一练】字符串对比

一、题目描述

给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
  1:两个字符串长度不等。比如 Beijing 和 Hebei
  2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
  3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
  4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
  编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

输入

包括两行,每行都是一个字符串

输出

仅有一个数字,表明这两个字符串的关系编号

二、样例

样例输入

BEIjing

beiJing

样例输出

3

三、个人解析 

这道题其实很简单,只需要掌握几个函数就行。其中strlen()函数、strcmp()函数在本人之前发布的《【C语言】输入字符串,将字符串逆转》中有提到。但此

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一道考察字符串拼接的题目。题目要求给定两个大写字母小写字母组成字符串(长为1到10之间),将它们拼接成一个字符串长度介于1到10之间),其中它们之间的关系是以下4种情况之一。 情况1:第一个字符串长度等于10。 情况2:第二个字符串长度等于10。 情况3:两个字符串长度都等于1。 情况4:第一个字符串第一个字符的字母顺序在第二个字符串第一个字符的字母顺序之前。 根据题目要求,我们可以编写如下代码: s1 = input() # 读入第一个字符串 s2 = input() # 读入第二个字符串 # 判断情况1:第一个字符串长度等于10 if len(s1) == 10: print(s1) # 直接输出第一个字符串 # 判断情况2:第二个字符串长度等于10 elif len(s2) == 10: print(s2) # 直接输出第二个字符串 # 判断情况3:两个字符串长度都等于1 elif len(s1) == 1 and len(s2) == 1: print(s1 + s2) # 拼接字符串并输出 # 判断情况4:第一个字符串第一个字符的字母顺序在第二个字符串第一个字符的字母顺序之前 elif ord(s1[0]) < ord(s2[0]): print(s1 + s2) # 拼接字符串并输出 ### 回答2: 题目描述: 给定两个大写字母小写字母组成字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1. 字符串1等于字符串2; 2. 字符串1小于字符串2; 3. 字符串1大于字符串2; 4. 两个字符串不可比较。 解题思路: 根据题意,我们可以很容易地将四种情况分别处理: 1. 若字符串1等于字符串2,则直接输出等于号。 2. 若字符串1小于字符串2,则需要比较它们各个字符的ASCII码值,找到第一个不相同的字符进行比较。若字符串1的该字符小于字符串2的该字符,则输出小于号;反之输出大于号。 3. 若字符串1大于字符串2,与情况2类似,也需要找到第一个不相同的字符进行比较。若字符串1的该字符大于字符串2的该字符,则输出大于号;反之输出小于号。 4. 若无法比较,则输出不可比较。 代码实现: ### 回答3: 这两个字符串相等; 第一个字符串比第二个字符串短; 第一个字符串比第二个字符串长; 第一个字符串是第二个字符串的子序列(不一定连续)。 第一种情况是两个字符串相等,这种情况比较简单,只需要用一个等号将两个字符串连接在一起进行比较即可。 对于第二种情况,需要将两个字符串长度从小到大排列,然后逐个比较字符是否相等,直到比较完短的那个字符串长度为止。如果所有字符都相等,则说明第一个字符串比第二个字符串短。 第三种情况同样需要将两个字符串长度从小到大排列,然后逐个比较字符是否相等,直到比较完短的那个字符串长度为止。如果所有字符都相等,但是第一个字符串还有多余的字符,则说明第一个字符串比第二个字符串长。 第四种情况需要遍历第二个字符串的每个字符,逐个与第一个字符串比较。如果在第一个字符串中找到了与第二个字符串相同的字符,则将第一个字符串中这个字符之前的所有字符都删掉,然后继续在剩余的字符串中查找。如果第一个字符串中所有字符都遍历完了,仍然没有找到相同的字符,则说明第一个字符串不是第二个字符串的子序列。 总之,对于这四种关系,只需要按照对应的方法进行比较即可。可以使用循环、分支、字符串截取等多种方式实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值