有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 “x” 和 “y”,你需要通过「交换字符」的方式使这两个字符串相同。

每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。

交换只能发生在两个不同的字符串之间,绝对不能发生在同一个字符串内部。也就是说,我们可以交换 s1[i] 和 s2[j],但不能交换 s1[i] 和 s1[j]。

最后,请你返回使 s1 和 s2 相同的最小交换次数,如果没有方法能够使得这两个字符串相同,则返回 -1 。

示例 1:

输入:s1 = “xx”, s2 = “yy”
输出:1
解释:
交换 s1[0] 和 s2[1],得到 s1 = “yx”,s2 = “yx”。

代码

class Solution {public int minimumSwap(String s1, String s2) {int n=s1.length();int ys1=0,xs1=0;for(int i=0;i<n;i++)//统计s1中不匹配的x y的数量if(s1.charAt(i)!=s2.charAt(i)){if(s1.charAt(i)=='x') xs1++;else ys1++;}int xl=xs1%2,yl=ys1%2;if(xl!=yl) return -1;return xl*2+xs1/2+ys1/2;}
}

leetcode1247. 交换字符使得字符串相同(贪心)相关推荐

  1. 交换字符使得字符串相同[贪心]

    贪心 前言 一.交换字符使得字符串相同 二.贪心 1.分析问题的思路过程 2.go 总结 参考资料 前言 贪心算法,必须先看清楚有哪些选择,才能在这些选择的基础上进行贪心,做最优选择,除此之外,还得看 ...

  2. Leetcode1247. 交换字符使得字符串相同

    ​ Every day a leetcode 题目来源:1247. 交换字符使得字符串相同 解法:贪心 由于要求交换次数尽量少,故: 本来相同位置就有相同的字符,不需要交换. 本来相同位置字符不同,需 ...

  3. 1247. 交换字符使得字符串相同

    1247. 交换字符使得字符串相同 难度中等162收藏分享切换为英文接收动态反馈 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y&qu ...

  4. 【1247. 交换字符使得字符串相同】

    来源:力扣(LeetCode) 描述: 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需要通过「交换字符」的方式使这两 ...

  5. LeetCode 1247. 交换字符使得字符串相同

    1. 题目 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需要通过「交换字符」的方式使这两个字符串相同. 每次「交换字 ...

  6. c语言字符串中的字符无效,字符串操作

    字符串主要用于编程,字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的.字符串也有很多操作,在正文将对C语言.C++和java中对其操作进行介绍. 中文名 字符串操作 外文名 strin ...

  7. c++实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”

    一个中文字符占两字节,所以逆转也得两两字符进行逆转,如上图 可得出0和8,1和9,2和6,3和7进行下标交换 由此可得出以下代码: #include <iostream> #include ...

  8. C/C++ 字符与字符串

    C语言中字符和字符串在标准头文件string.h,在C++中<cstring>是C语言的标准库,另外还有一个<string>标准类,这个标准类是的C++具备了string字符串 ...

  9. 正则的实例用法,删除包含某些字符的字符串

    a=re.findall('[a-z]system[a-z]', ': Control_7_ CodeSystem: GroupCodeSystem: IdSystem:'.lower()) re.s ...

最新文章

  1. python cx_oracle 有超时的设置吗_python cx_Oracle的基础使用方法(连接和增删改查)
  2. R语言构建xgboost模型:控制训练信息输出级别verbose参数
  3. HBase MetaStore和Compaction剖析
  4. (转)Http协议经典详解
  5. Algorithm-Gossip(4) 三色棋(Three_Color_Flag)
  6. oracle 24756,关于ORA-24756: transaction does not exist的问题
  7. Tomcat的目录结构详解
  8. java中子类可否抛出两个父类抛出的异常的子类_父类的多个构造方法各自抛出不同的异常,子类的构造方法应该抛出哪个/些异常?...
  9. c++中list用法
  10. 在Visual Studio Code运行单个js文件需要用到插件
  11. 【poj1995】Raising Modulo Numbers
  12. 引言:扇贝 2017 服务端技术回顾
  13. js ajax上传file文件上传,使用ajaxfileupload.js实现上传文件功能
  14. esp8266_deauther第四篇
  15. 帅某---考研---高数笔记---汤家凤---第十章向量代数与空间几何
  16. awesomium -- 出色的Web浏览插件
  17. 磁盘分区(disk)
  18. java与python两个小人动图_CSS Sprite小图片自动合并工具(NodeJS,Python,Java,Ruby)
  19. 448. Find All Numbers Disappeared in an Array(找到所有数组中消失的数字)
  20. MIT6.824环境搭建:wls+vs code

热门文章

  1. Vivado软件(用VerilogHDL)如何使用$readmemh和$readmemb函数
  2. 函数fork vfork
  3. 第3章 文件IO | 001 文件描述符
  4. 线程共享全局变量(.data和.bbs)
  5. 从新手到Flutter架构师,一篇就够!附赠课程+题库
  6. echo(),print(),print_r(),var_dump()的区别
  7. 腾讯云AI应用产品总监王磊:AI 在传统产业的最佳实践
  8. 【懒癌发作】收集各种懒癌发作时用程序写作业的程序
  9. Android学习之查看网络图片
  10. 简单的Excel导出(两种方式)