当前位置: 首页 > news >正文

[蓝桥杯]找到给定字符串中的不同字符

题目描述

在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下:

  1. 当传入的字符串为 aad 和 ad 时,结果为 a

  2. 当传入的字符串为 aaabccdd 和 abdcacade 时,结果为 e

输入描述

输入两行字符串,长度均不超过 100。

输出描述:

输出一行,为相差的那个字符。

输入输出样例

示例

输入

aad
ad

输出

a

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

总通过次数: 5726  |  总提交次数: 6103  |  通过率: 93.8%

难度: 中等   标签: 新手

方法思路

题目要求找出两个字符串中相差的那个字符(两个字符串长度相差1,且只相差一个字符)。最优解法是利用​​异或运算​​的性质:

复杂度分析

示例验证

  1. ​异或特性​​:相同字符异或结果为0,任何字符与0异或结果为本身。
  2. ​核心思路​​:将两个字符串的所有字符进行异或运算,成对出现的字符会相互抵消(结果为0),最终剩下的字符就是相差的那个字符。
  3. ​优势​​:时间复杂度为O(n),空间复杂度O(1),效率高且代码简洁。
    #include <iostream>
    #include <string>
    using namespace std;int main() {string s1, s2;getline(cin, s1);  // 读取第一行字符串getline(cin, s2);  // 读取第二行字符串// 检查输入是否为空(题目要求非空,但需处理None情况)if (s1.empty() || s2.empty()) {cerr << "TypeError: str1 or str2 cannot be None" << endl;return 1;}char result = 0;// 遍历s1所有字符进行异或for (char c : s1) {result ^= c;}// 遍历s2所有字符进行异或for (char c : s2) {result ^= c;}cout << result << endl;  // 输出相差的字符return 0;
    }

    代码解释

  4. ​输入处理​​:

    • 使用getline()读取两行字符串,确保包含空格也能正确处理。
    • 检查输入是否为空,若为空则抛出TypeError(符合题目要求)
  5. ​异或运算​​:

    • 初始化result = 0
    • 遍历s1的每个字符,与result异或:相同字符会抵消(如'a' ^ 'a' = 0)。
    • 遍历s2的每个字符,再次与result异或:最终结果即为相差字符(因该字符只出现一次,无法被抵消)
  6. ​输出结果​​:

    • 直接输出result,即相差的字符。
  7. ​输入​​:aad 和 ad
    ​计算过程​​:
    'a' ^ 'a' ^ 'd' ^ 'a' ^ 'd' = ('a' ^ 'a' ^ 'a') ^ ('d' ^ 'd') = 'a' ^ 0 = 'a'
    ​输出​​:a(正确)

  8. ​输入​​:aaabccdd 和 abdcacade
    ​输出​​:e(因e仅在第二个字符串中出现一次)

  9. ​时间复杂度​​:O(n),仅需遍历两个字符串各一次。
  10. ​空间复杂度​​:O(1),仅使用常量空间。

相关文章:

  • deepseek问答记录:请讲解一下transformers.HfArgumentParser()
  • JAVA学习-练习试用Java实现“PCA(主成分分析) :用于降维和数据可视化”
  • [免费]微信小程序网上花店系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
  • 数据库管理-第332期 大数据已死,那什么当立?(20250602)
  • SOC-ESP32S3部分:26-物联网MQTT连云
  • Spring Cloud 2025 正式发布啦
  • MapReduce(期末速成版)
  • uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)
  • 每日一道面试题---ArrayList的自动扩容机制(口述版本)
  • Unity中应对高速运动的物体,碰撞组件失效的问题?
  • 计算机视觉---深度学习框架(Backbone、Neck、Head)
  • uniapp中view标签使用范围
  • Java实习面试题
  • 第十天:Java反射
  • vscode 插件 eslint, 检查 js 语法
  • 导入典籍数据
  • Kotlin 中 companion object 扩展函数和普通函数区别
  • 【Delphi】实现在多显示器时指定程序运行在某个显示器上
  • 使用 OpenCV (C/C++) 通过二值化增强车牌识别
  • 如何选择合适的哈希算法以确保数据安全?
  • 日本做a爱片视频网站/网上怎么推广产品
  • 整合营销传播策划方案/郑州专业seo推荐
  • 做网站页面该建多大的画布/爱站工具包官网下载
  • 加盟企业网站建设目的/免费建网页
  • wordpress做后端 前端/宁波seo免费优化软件
  • 毕业设计 网站开发简单吗/做推广的都是怎么推