首页 > 试题广场 >

判断是否为回文字符串

[编程题]判断是否为回文字符串
  • 热度指数:100362 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。

字符串回文指该字符串正序与其逆序逐字符一致。

数据范围:
要求:空间复杂度 ,时间复杂度
示例1

输入

"absba"

输出

true
示例2

输入

"ranko"

输出

false
示例3

输入

"yamatomaya"

输出

false
示例4

输入

"a"

输出

true

备注:
字符串长度不大于1000000,且仅由小写字母组成
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# @param str string字符串 待判断的字符串
# @return bool布尔型
#
class Solution:
    def judge(self , str ):
        # write code here
        if len(str)==1:
            return  True
        for i in range(len(str)//2):
            if str[i]!=str[len(str)-i-1]:
                return False
        return True
发表于 2022-04-02 14:21:59 回复(0)
运行时间35~41ms, 内存13348kb,时间复杂度应该是O(n/2)??不太会算这个。
思路:第一个和最后一个对比,第二个和倒数第二个对比,这样内存只需要存一个str
class Solution:
    def judge(self , str ):
        # write code here
        i = -1
        j = 0
        k = 1
        while i+1+abs(j) < len(str):
            i += k
            j -= k
            if str[i] != str[j]:
                return False
            k += 1
        return True
测试了下评论区大佬的神仙解法:
直接return str[:] == str[::-1],运行时间也在35~41ms,但内存却要18000kb,这说明代码量不是越少越好hh
发表于 2021-11-02 19:50:28 回复(0)
用print()没过,用return过了为什么?
发表于 2021-07-02 12:14:31 回复(1)
a=str(input())
b=a[::-1]
if a==b:
    print('true')
else:
    print('false')

编辑于 2021-06-09 21:57:08 回复(0)
#python
class Solution:
    def judge(self , str ):
        # write code here
         length = len(str)
              for i in range(int(length/2)):
                 if str[i] != str[length-i-1]:
                    return False
        return True

编辑于 2021-01-22 23:45:14 回复(0)
class Solution:
    def judge(self , str ):
        # write code here
        length=len(str)
        i=0
        j=-1
        while i+abs(j)<length:
            if str[i]!=str[j]:
                return False
                break
            else:
                i+=1
                j-=1
        return True
python版本
发表于 2020-12-19 20:16:37 回复(0)