• IDI Open 2016 H 字符串模拟题


    H - Palindrome Names

    题意:给定一个字符串,每次可以向末尾添加一个字符或者更改一个字符。求使得字符串为回文串(从前往后和从后往前读一样)所花费的最小步数。

    题解: 看来需要多思考啊!题目并不难,应该是见得少。先写个思路。

    想让它变成回文串,那么可以向后面添加也可以更改其中一个元素。可以这样想,我在后面添加一个字符,那么我需要判断添加后还有几个不匹配,最小步数就是不匹配的个数+1。我要是就修改,最小步数就是不匹配的个数。 我需要从这两种操作中选择最小的就是答案。关键在于我添加一个字符后判断有几个不匹配的。 既然回文,说明把它倒过来写是一样的,这时添加一个字符看匹配个数就可以理解为把字符倒过来移动一位匹配个数,比如:

                                  abcdefgded      把他倒过来挪一位:

                                       dedgfedcba

    这样做的意思就是我在字符串后面添加一位,这一位必然要和前面第一位‘a'相同,那么剩下的再看有多少不匹配的加起来就是我这个操作需要的步数。我添加两位就是:

                                      abcdefgded 

                                           dedgfedcba

    也就是字符串前两个'ab'一定匹配,再看剩下对应为不匹配的个数。以此类推。。。

    其实,就像学长所说,最多操作步数就是字符串长度len/2.。。。跟它比较就行了。

  • 相关阅读:
    linux下好用的软件
    linux下常见目录的介绍
    slam相关链接
    GPS 使用的三种坐标系 ECEF、ENU、LLA坐标系
    平面度计算 C++实现
    QT Cmake添加srv和msg
    pcl点云与ros之间的数据类型转换
    ROS分布式设置
    qt中播放视频和音频
    linux tips
  • 原文地址:https://www.cnblogs.com/zxhyxiao/p/7249010.html
Copyright © 2020-2023  润新知