leetcode 859. Buddy Strings(同伴字符串)

news2024/11/16 1:42:09

在这里插入图片描述

给出字符串s 和 goal, 判断交换 s 中的一对字母是否能得到goal.
必须是不同位置字母的交换。

思路:

先考虑边界情况,
s 和 goal 的长度不相等时,s 怎么交换都不会得到goal.
s 的长度 < 2时,没有可交换对象,肯定是false.
s和goal相同时,看Example2和Example3两种情况:
有重复字母时为true, 否则为false.

然后是一般情况,
s能通过交换一对字母得到goal,
首先它们的每个字母个数必须是相同的,
而且 s 和 goal 只有2个位置的字母不一样,
统计字母不一样的位置个数,恰好为2时返回true.

    public boolean buddyStrings(String s, String goal) {
        char[] cs = s.toCharArray();
        char[] cg = goal.toCharArray();
        int sn = cs.length;
        int gn = cg.length;
        
        //长度不相等和长度<2的情况
        if(sn != gn || sn < 2) return false;
		//example2和3的情况
        if(s.equals(goal)) {
            int[] cnt = new int[26];
            for(int i = 0; i < sn; i++) {
                if(cnt[cs[i]-'a'] == 1) return true;
                cnt[cs[i]-'a'] = 1;
            }
            return false;  
        }
		//字母个数是否相同
		//统计字母不同的位置个数,恰好为2时返回true.
        int diff = 0;
        int[] cnts = new int[26];
        int[] cntg = new int[26];

        for(int i = 0; i < sn; i++) {
            cnts[cs[i] - 'a'] ++;
            cntg[cg[i] - 'a'] ++;
            if(cs[i] != cg[i]) diff++;
        } 

        for(int i = 0; i < 26; i++) {
            if(cnts[i] != cntg[i]) return false;
        }

        return diff == 2;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【力扣】94、二叉树的中序遍历

94、二叉树的中序遍历 注&#xff1a;二叉树的中序遍历&#xff1a;左根右&#xff1b; // 非递归&#xff1a; var inorderTraversal function (root) {const arr [];//创建新数组&#xff1b;const stack [];//创建一个栈道&#xff1b;let o root;while( stack.length |…

办公实现降本增效,可借助微服务开源平台的力量!

在如今的快节奏发展时代&#xff0c;低代码开发平台拥有了一个广阔的发展天地&#xff0c;逐渐在通信业、医疗、物流、高校等众多大中型企业中获得一个立足之地&#xff0c;是助力企业提质、降本、增效的得力助手。微服务开源平台可以让企业实现这一目的&#xff0c;那么对于企…

AMBER分子动力学能量优化与分析、结合自由能计算专题

AMBER分子动力学能量优化与分析、结合自由能计算专题 第一天 时间:AM9:00~9:50 内容:六.分子动力学入门理/论 教学目标&#xff1a;了解本方向内容、理论基础、研究意义。 主要知识点:4分子力学简介 4.1分子力学的基本假设 4.2分子力学的主要形式 5分子力场 5.1分子力场的简…

passware kit forensic使用

一、从外部注册表文件提取密码 适用于不联网的情况下&#xff0c;例如2023盘古石杯的NAS取证 找到Windows/System32/config并在本地打开 将路径填充到config folder中 跑出来了John电脑对应的密码是paofen&#xff0c;NAS的密码是P88w0rd 后续遇见再补

Linux - 那些年测试服务器带宽的 3 种方式

方式一 speedtest-cli wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.pychmod x speedtest-cliorcurl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.pychmod x speedtest-c…

【Linux】基础开发工具——yum篇

目录 &#x1f4d6;Linux下安装软件的三种方案&#x1f4f0;源代码安装&#x1f4f0;rpm安装&#x1f4f0;yum安装 &#x1f4d6;Linux软件包管理器yum&#x1f4f0;rz、sz&#x1f4f0;查看软件包&#x1f4f0;软件安装&#x1f4f0;软件删除 &#x1f4d6;yum源问题&#x1f…

Hadoop:DataNode启动失败:Initialization failed for Block pool

一、问题发现 ​在启动Hadoop集群后&#xff0c;发现原本应该是启动三台机子的数据节点&#xff0c;结果只有一台node2成功启动&#xff0c;另外两台&#xff08;node1、node3&#xff09;并没有启动&#xff0c;如下两图所示&#xff1a; 问题描述&#xff1a; ​确认配置信…

day3 QT对话框

目录 QDialog 标准对话框&#xff08;Standard Dialogs&#xff09;&#xff1a; 内置对话框&#xff08;Built-in Dialogs&#xff09;&#xff1a; 自定义对话框&#xff08;Custom Dialogs&#xff09; 示例 myqdialog.h widget.h myqdialog.cpp widget.cpp QDialog Q…

springboot实现网络图片转存的临时文件后上传腾讯云cos

有时复制一张图片url&#xff0c;想转存到自己的腾讯云cos保存。 实现思路是&#xff1a;先将网络图片url保存到当前项目一个临时文件夹里&#xff0c;然后发送腾讯云cos对象存储&#xff0c;返回一个url&#xff0c;最后&#xff0c;删除该临时文件图片。 测试结果 1. util实…

【C】分支和循环语句

目录 【1】什么是语句 【2】分支语句&#xff08;选择结构&#xff09; 【2.1】if 语句 【2.1.1】语法结构 【2.1.2】悬空else 【2.1.3】书写形式的对比 【2.1.4】练习 【2.2】switch 语句 【3.2.1】语法结构 【3.2.2】在switch语句中的 break 【3.2.3】default子句…

Nginx【Nginx场景实践(fair模块安装、Nginx配置故障转移、跨域问题、跨域问题解决)】(九)-全面详解(学习总结---从入门到深化)

目录 Nginx场景实践_fair模块安装 Nginx场景实践_Nginx配置故障转移 Nginx场景实践_跨域问题 Nginx场景实践_跨域问题解决 Nginx场景实践_fair模块安装 模块介绍 fair采用的不是内建负载均衡使用的轮换的均衡算法&#xff0c;而是可以根据 页面大小、加载时间长短智能的进…

C++(Day5)

思维导图&#xff1a; 全局变量&#xff0c;int monster 10000;定义英雄类hero&#xff0c;受保护的属性string name&#xff0c;int hp,int attck&#xff1b;公有的无参构造&#xff0c;有参构造&#xff0c;虚成员函数 void Atk(){blood-0;}&#xff0c;法师类继承自英雄类…

客户案例:构建可靠海外通邮系统,护航教育行业信息安全

►►►客户背景 某985高校作为一所国内知名的高等教育机构&#xff0c;拥有优质的师生资源和丰富的教学经验&#xff0c;积极开展与国外高校的合作交流&#xff0c;组织师生参与出国交流、学术考察等活动&#xff0c;在跨境科研合作和人才培养等领域开展深入合作&#xff0c;推…

2023-07-03:讲一讲Redis缓存的数据一致性问题和处理方案。

2023-07-03&#xff1a;讲一讲Redis缓存的数据一致性问题和处理方案。 答案2023-07-03&#xff1a; 数据一致性 当使用缓存时&#xff0c;无论是在本地内存中缓存还是使用 Redis 等外部缓存系统&#xff0c;会引入数据同步的问题。下面以 Tomcat 向 MySQL 中进行数据的插入、…

《操作系统》- 操作系统的发展与分类

目录 前言一、手工操作阶段1.1 人工操作方式1.2 脱机输入/输出方式 二、批处理阶段2.1 单道批处理系统2.2 多道批处理系统 三、分时操作系统四、实时操作系统五、微机操作系统的发展六、总结 前言 从第一台计算机诞生至今已过去70多年了&#xff0c;在这期间&#xff0c;计算机…

Python程序设计基础:程序流程控制(二)

文章目录 一、循环结构1、for语句2、while语句3、break和continue语句4、循环结构中的else语句5、循环的嵌套 一、循环结构 最基本的复杂工作就是循环&#xff0c;要想写出的程序能够执行更加复杂的工作&#xff0c;就需要将循环问题进行实现。 1、for语句 for语句用一个循环…

【剧前爆米花--爪哇岛寻宝】网络原理——ip地址管理,路由选择和数据链路层数据帧

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于网络原理的文章&#xff0c;在这篇文章中我会具体介绍ip地址的分配管理&#xff0c;信息传输的路由选择以及以以太网来举例的数据链路层数据帧&#xff0c;希望对你有所帮助&#…

IDE /Qt Creator 文本编辑器之文件编码设置

文章目录 概述"QtCreator 文件编码" 配置项的使用效果将代码文件修改为GB2312编码"QtCreator 文件编码" 配置项的功能不会影响qml文件的加载方式改动pro文件的编码格式?其他 概述 在 Qt Creator 工具 - 选项 - 文本编辑器 - 行为选项卡中&#xff0c;存在…

RabbitMQ入门指南

人生永没有终点。只有等到你瞑目的那一刻&#xff0c;才能说你走完了人生路&#xff0c;在此之前&#xff0c;新的第一次始终有&#xff0c;新的挑战依然在&#xff0c;新的感悟不断涌现。 文章目录 一、MQ与RabbitMQ概述1. MQ简述2. MQ的优势3. MQ的劣势4. 常见的MQ产品5. Rab…

【Redis】Redis高可用

目录 主从复制1. 全量复制2. 增量复制3. 主从复制的问题&#xff08;1&#xff09;. 主从复制延迟&#xff08;2&#xff09;. 读到过期数据&#xff08;3&#xff09;. 主从配置不一致导致数据丢失&#xff08;4&#xff09;. 全量复制性能损耗大&#xff08;5&#xff09;. 主…