• 力扣 2020.08.19


    09. 回文数

    题目

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    示例 1:

    输入: 121
    输出: true

    示例 2:

    输入: -121
    输出: false
    解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

    示例 3:

    输入: 10
    输出: false
    解释: 从右向左读, 为 01 。因此它不是一个回文数。

    思路

    由于负数肯定不是回文数,所以碰到负数就返回false;

    非负数我们可以通过将其转化为字符串,然后利用字符串的倒序[::-1]来作比较。

    代码

    class Solution:
        def isPalindrome(self, x: int) -> bool:
            if x < 0:
                return False
            y = str(x)[::-1]
            if y == str(x):
                return True
            else:
                return False
    

    复杂度分析

    时间复杂度:O(n)

    空间复杂度:O(n)

    647. 回文子数

    题目

    给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

    具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

    示例 1:

    输入:"abc"
    输出:3
    解释:三个回文子串: "a", "b", "c"
    示例 2:

    输入:"aaa"
    输出:6
    解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"

    思路

    使用最简单的方法,逐个比较各个子串和回文子串是否相等。

    若相等,则结果加一;若不相等,则进行下一个。

    代码

    class Solution:
        def countSubstrings(self, s: str) -> int:
            result = 0
            for i in range(0,len(s)):
                for j in range(i+1, len(s)+1):
                    if s[i:j] == s[i:j][::-1]:
                        result += 1
    
            return result
    

    复杂度分析

    时间复杂度:O(n^2)

    空间复杂度:O(n)

    两道题的共同点

    今天的两道题都用到了python的字符串的反向输出功能,即切片的[::-1]即为反向输出。

    这也是python中比较好用的一个功能了,如果善用的话,可以使得代码简单不少。

    当然,切片的反转这个方法本身也是O(n)复杂度的。

    About me: 资深大猪蹄子
  • 相关阅读:
    jQuery1.9(辅助函数)学习之—— jQuery.param( obj ); 编辑
    jQuery1.9(辅助函数)学习之——.serialize();
    jQuery1.9(辅助函数)学习之——.serializeArray();
    聊聊 getClientRects 和 getBoundingClientRect 方法
    聊一聊数组的map、reduce、foreach等方法
    Typescript 接口(interface)
    配置 tsconfig.json
    Chrome 插件推荐
    Typescript 基础知识
    package.json
  • 原文地址:https://www.cnblogs.com/young233/p/13529798.html
Copyright © 2020-2023  润新知