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

    ……

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

  • 相关阅读:
    Python3.6全栈开发实例[022]
    Python3.6全栈开发实例[021]
    Python3.6全栈开发实例[020]
    Python3.6全栈开发实例[019]
    Python3.6全栈开发实例[018]
    单选按钮QRadioButton
    QToolButton按钮
    文本编辑框QTextEdit
    信号-事件汇总
    QMessageBox消息框
  • 原文地址:https://www.cnblogs.com/JebediahKerman/p/6043576.html
Copyright © 2011-2022 走看看