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

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

题目描述

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

  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),仅使用常量空间。
http://www.lryc.cn/news/2398748.html

相关文章:

  • Redis底层数据结构之字典(Dict)
  • 佰力博科技与您探讨低温介电温谱测试仪的应用领域
  • ubuntu之开机自启frpc
  • 【办公类-48-04】202506每月电子屏台账汇总成docx-5(问卷星下载5月范围内容,自动获取excel文件名,并转移处理)
  • 对 `llamafactory-cli api -h` 输出的详细解读
  • 基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代
  • demo_win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok公网测试
  • TablePlus:一个跨平台的数据库管理工具
  • SQL Indexes(索引)
  • Axure 基础入门
  • 结构型设计模式之Decorator(装饰器)
  • HCIP-Datacom Core Technology V1.0_3 OSPF基础
  • 工作自动化——工作自动提炼--智能编程——仙盟创梦IDE
  • go语言学习 第 2 章:变量与数据类型
  • 大语言模型评测体系全解析(上篇):基础框架与综合评测平台
  • Spring Event(事件驱动机制)
  • Fisher准则例题——给定类内散度矩阵和类样本均值
  • MySQL数据库中INNODB表数据的备份与恢复
  • 振动分析师(ISO18436-2)四级能力矩阵 - 简介
  • 生产环境MYSQL常见锁表场景
  • 结构性设计模式之Composite(组合)
  • Java面试八股--04-MySQL
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(31):そう
  • 设计模式——访问者设计模式(行为型)
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题
  • 《对象创建的秘密:Java 内存布局、逃逸分析与 TLAB 优化详解》
  • LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
  • Java并发编程:读写锁与普通互斥锁的深度对比
  • Spring Boot Actuator未授权访问漏洞修复
  • 机器学习——SVM