前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode面试题目——PHP实现最短回文串

LeetCode面试题目——PHP实现最短回文串

作者头像
benny
发布2020-02-25 11:46:29
6740
发布2020-02-25 11:46:29
举报

题目

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

示例 1:

输入: "aacecaaa"
输出: "aaacecaaa"

示例 2:

输入: "abcd"
输出: "dcbabcd"

简单说明

我们先写个判断字符串是否为回文的函数,然后从右往左一点点往里面填,拼接到旧的字符串上,判断是不是回文串,如果是的话,直接返回即可

代码

class Solution {

    /**
     * Created by 沙蒿.
     * @desc 生成回文字符串
     * @param $s
     * @return string
     */
    function shortest_palindrome($s)
    {
        $temp = '';
        $len  = strlen($s);
        if ($len > 1) {
            if (!$this->is_palindrome($s)) {
                for ($i = 0; $i < $len - 1; $i++) {
                    //每一次从尾部依次取一个下标字符串到前面
                    $temp = $temp . $s[$len - 1 - $i];
                    if ($this->is_palindrome($temp . $s)) {
                        return $temp . $s;
                    }
                }
            }
        }
        return $s;
    }

    /**
     * Created by 沙蒿.
     * @desc 判断是否为回文字符串
     * @param $string
     * @return bool
     */
    function is_palindrome($string)
    {
        $len    = strlen($string);
        $is_odd = ($len % 2 == 0) ? 0 : 1;
        $midd   = $len / 2;
        //从0位置开始,截取字符串前几位数字
        $f_string = substr($string, 0, $midd);
        //从上一个截取的结束位置起(奇数 + 1),截取字符串后几位数字,并反转字符串
        $b_string = strrev(substr($string, $midd + $is_odd, $midd));
        if ($f_string != $b_string) {
            return false;
        }
        return true;
    }
}

结果

提交结果:提交通过

通过测试用例:120/120

语言:php

执行用时:632 ms

消耗内存:15.3 MB

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的碎碎念 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 简单说明
  • 代码
  • 结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档