zoukankan      html  css  js  c++  java
  • 交换字符使得字符串相同

    此博客链接:

    交换字符使得字符串相同

    题目链接:https://leetcode-cn.com/problems/minimum-swaps-to-make-strings-equal/

    题目

    有两个长度相同的字符串 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"。
    示例 2:

    输入:s1 = "xy", s2 = "yx"
    输出:2
    解释:
    交换 s1[0] 和 s2[0],得到 s1 = "yy",s2 = "xx" 。
    交换 s1[0] 和 s2[1],得到 s1 = "xy",s2 = "xy" 。
    注意,你不能交换 s1[0] 和 s1[1] 使得 s1 变成 "yx",因为我们只能交换属于两个不同字符串的字符。
    示例 3:

    输入:s1 = "xx", s2 = "xy"
    输出:-1
    示例 4:

    输入:s1 = "xxyyxyxyxx", s2 = "xyyxyxxxyx"
    输出:4
     

    提示:

    1 <= s1.length, s2.length <= 1000
    s1, s2 只包含 'x' 或 'y'。

    题解

     先把字符串转成字符数组,然后统计两个数组中x个数和y个数是否相等,如果不相等则返回-1,。如果相等,则做如下操作:

    1.记录两个数组中相同下标元素值不相等元素下标。

    2.把相同的元素对放到一起,统计有多少相同元素。

    3.统计不同元素个数。

    代码

    结果

    出来混总是要还的
  • 相关阅读:
    hdu 1199 Color the Ball 离散线段树
    poj 2623 Sequence Median 堆的灵活运用
    hdu 2251 Dungeon Master bfs
    HDU 1166 敌兵布阵 线段树
    UVALive 4426 Blast the Enemy! 计算几何求重心
    UVALive 4425 Another Brick in the Wall 暴力
    UVALive 4423 String LD 暴力
    UVALive 4872 Underground Cables 最小生成树
    UVALive 4870 Roller Coaster 01背包
    UVALive 4869 Profits DP
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14642704.html
Copyright © 2011-2022 走看看