Leetcode
Published:
9. Palindrome Number
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
list_x = str(x)
list_x_inverse = list_x[::-1]
if list_x == list_x_inverse:
return True
else:
return False
通过str() 先转字符串string 在 Python 中,[::-1]
是一种切片语法,用于反转字符串、列表或其他可切片的序列。它的作用是将序列从后往前以步长为 -1 进行读取,从而实现反转。
分解解释
- 切片语法结构:
[start:end:step]
start
: 起始索引(默认从序列的第一个元素开始,即0
)。end
: 结束索引(默认到序列的最后一个元素)。step
: 步长
[::-1]
的含义:start
和end
都为空,表示整个序列。step
是-1
,表示从右往左读取序列。
- 应用实例:
list_x = "12345" list_x_inverse = list_x[::-1] # 输出: "54321"
- 在代码中的作用: 在你的代码中:
list_x_inverse = list_x[::-1]
它将整数
x
转为字符串后,反转该字符串。然后通过对比反转前后的字符串,判断是否是回文数。 - 进一步说明:
- 如果原序列是
"abc"
, 切片操作[::-1]
输出为"cba"
。 - 如果原序列是
[1, 2, 3]
, 切片操作[::-1]
输出为[3, 2, 1]
。
- 如果原序列是
这种方法简洁高效,适合检查回文或对序列进行反转操作。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
list_x = list(str(x))
print(list_x)
list_x_inverse = list_x[::-1]
if list_x == list_x_inverse:
return True
else:
return False
也可以先转string 再转 list ,然后 list[::-1]从后往前对List切片
巧妙运用切片
while not strings.startswith(prefix):
prefix = prefix[:-1] ##切片操作,从后向前保留0:-1 也就是切掉最后面的一位
print("prefix is", prefix)
print("judge", strings.startswith(prefix))
这样切片可以每次从后往前切掉一个,直到切到strings.startswith(prefix) 为true 或者prefix 为’’ 空时变成True
布尔值和其他数据类型的关系
布尔值与其他数据类型的关系 在 Python 中,以下值会被解释为 False:
None(空值) 数值类型的 0(包括整数和浮点数) 空序列和空集合(如 ‘’, [], {}, set()) 布尔值 False
所以如果有一个空列表,
s = list() ## s 的boolen值直接就是False!, 直接就会进入else
if s:
print("the s is not empty")
else:
print("the s is empty,)
Arraylist 标准写法
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
dummy = ListNode(0)
result = dummy
current_array = head
flag = None
while current_array is not None:
#############
##############
current_array = current_array.next
return dummy.next