zoukankan      html  css  js  c++  java
  • IDI Open 2016 H 字符串模拟题

    H - Palindrome Names

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

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

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

                                  abcdefgded      把他倒过来挪一位:

                                       dedgfedcba

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

                                      abcdefgded 

                                           dedgfedcba

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

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

  • 相关阅读:
    Laravel 5.1 简单学习
    Laravel5.1 报错:控制器不存在
    集电极开路、漏极开路、上拉电阻、下拉电阻等接口相关基本概念
    UDS(ISO14229-2006) 汉译(No.7 应用层协议)
    Freescale 车身控制模块(BCM) 解决方案
    汽车控制器LIMPHOME电路设计
    区分整流二极管和稳压二极管
    耦合电容和滤波电容的区别
    二极管钳位电路
    开关二极管工作原理
  • 原文地址:https://www.cnblogs.com/zxhyxiao/p/7249010.html
Copyright © 2011-2022 走看看