zoukankan      html  css  js  c++  java
  • String

    String

    Description

    给N个字符串,可以对长度为偶数的前缀(如果字符串长度为偶数,这里的前缀包括整个字符串)进行翻转,可以翻转任意次,如果翻转后两个字符串相同就可以消去,最后最少剩下多少个字符串。

    Solution

    可以证明可以实现如下三个操作:

    1.

    AB->BA

    ABCD->ABDC

    ABCDEF->ABCDFE

    ABCDEFGH->ABCDEFHG

    ……

    2.

    ABCD->CDAB

    ABCDEF->CDEFAB

    ABCDEFGH->CDEFGHAB

    ……

    3.

    ABCDEF->ABEFCD

    ABCDEFGH->ABCDGHEF

    ABCDEFGHIJ->ABCDEFIJGH

    …..

    证明:

    对于AB->BA无须证明

    对于ABCD->ABDC:

    ABCD->DCBA->CDBA->ABDC

    对于ABCDEF->ABCDFE:

    ABCDEF->FEDCBA->EFDCBA->ABCDFE

    ……

    对于ABCD->CDAB:

    ABCD->DCBA->……->DCAB->CDAB

    对于ABCDEF->CDEFAB:

    ABCDEF->FEDCBA->……->FEDCAB->CDEFAB

    对于ABCDEFGH->CDEFGHAB:

    ABCDEFGH->HGFEDCBA->……->HGFEDCAB->CDEFGHAB

    ……

    对于ABCDEF->ABEFCD:

    ABCDEF->……->EFABCD->……->ABEFCD

    对于ABCDEFGH->ABCDGHEF:

    ABCDEFGH->……->GHABCDEF->……->ABCDGHEF

    对于ABCDEFGHIJ->ABCDEFIJGH:

    ABCDEFGHIJ->……->IJABCDEFGH->……->ABCDEFIJGH

    ……

    证明了这三个操作,就可以给每个字符串中的字符排序,这样就可以判断两个字符串是否能变成同一个字符串。

  • 相关阅读:
    python IDLE 如何实现清屏
    协同过滤算法(天池竞赛试题)
    二次排序
    异常类面试题
    异常类
    2020年Java程序员应该学习的10大技术
    java-servlet-EL表达式和java标签
    java-servlet过滤器和监听
    java-Servlet-cookie and session
    java-servlet-转发AND路径
  • 原文地址:https://www.cnblogs.com/JebediahKerman/p/6043576.html
Copyright © 2011-2022 走看看