你如何检查给定的输入是否是回文?
How do you check if a given input is a palindrome?
我需要检查输入是否是回文。
我将输入转换为字符串,并使用列表切片将输入与输入的反向进行比较。我想学习一种不将输入转换为字符串的不同方式。
def palindrome(n):
num = str(n)
if num == num[::-1]:
return True
还有以下两种方法:
- Iterative Method: Run loop from starting to length/2 and check first character to last character of string and second to second last one and so on. If any character mismatches, the string wouldn’t be palindrome.
下面的示例代码:
def isPalindrome(str):
for i in xrange(0, len(str)/2):
if str[i] != str[len(str)-i-1]:
return False
return True
- One Extra Variable Method: In this method, user take a character of string one by one and store in a empty variable. After storing all the character user will compare both the string and check whether it is palindrome or not.
下面的示例代码:
def isPalindrome(str):
w = ""
for i in str:
w = i + w
if (str==w):
return True
return False
假设 n
是一个数字,您可以从右到左获取数字并用这些数字从左到右构建一个数字:
n = 3102
m = n
p = 0
while m:
p = p*10 + m%10 # add the rightmost digit of m to the right of p
m //= 10 # remove the rightmost digit of m
print(p) # 2013
因此函数:
def palindrome(n):
m = n
p = 0
while m:
p = p*10 + m%10
m //= 10
return p == n
注意:
if num == num[::-1]:
return True
will return None
if num != num[::-1]
(函数结束)。你应该写:
if num == num[::-1]:
return True
else:
return False
或者(更短更简洁):
return num == num[::-1]
您可以尝试以下方法:
- 从数字中提取所有数字
n
- 在每次迭代中,将数字附加到一个列表 (
digits
) 和另一个列表开头的那个数字 (reversed_digits
)
- 提取完所有数字后,比较两个列表
def palindrome(n):
digits = []
reversed_digits = []
while n > 0:
digit = n % 10
digits.append(digit)
reversed_digits.insert(0, digit)
n //= 10
return digits == reversed_digits
注意:这可能不是解决这个问题最有效的方法,但我认为它很容易理解。
我需要检查输入是否是回文。
我将输入转换为字符串,并使用列表切片将输入与输入的反向进行比较。我想学习一种不将输入转换为字符串的不同方式。
def palindrome(n):
num = str(n)
if num == num[::-1]:
return True
还有以下两种方法:
- Iterative Method: Run loop from starting to length/2 and check first character to last character of string and second to second last one and so on. If any character mismatches, the string wouldn’t be palindrome.
下面的示例代码:
def isPalindrome(str):
for i in xrange(0, len(str)/2):
if str[i] != str[len(str)-i-1]:
return False
return True
- One Extra Variable Method: In this method, user take a character of string one by one and store in a empty variable. After storing all the character user will compare both the string and check whether it is palindrome or not.
下面的示例代码:
def isPalindrome(str):
w = ""
for i in str:
w = i + w
if (str==w):
return True
return False
假设 n
是一个数字,您可以从右到左获取数字并用这些数字从左到右构建一个数字:
n = 3102
m = n
p = 0
while m:
p = p*10 + m%10 # add the rightmost digit of m to the right of p
m //= 10 # remove the rightmost digit of m
print(p) # 2013
因此函数:
def palindrome(n):
m = n
p = 0
while m:
p = p*10 + m%10
m //= 10
return p == n
注意:
if num == num[::-1]:
return True
will return None
if num != num[::-1]
(函数结束)。你应该写:
if num == num[::-1]:
return True
else:
return False
或者(更短更简洁):
return num == num[::-1]
您可以尝试以下方法:
- 从数字中提取所有数字
n
- 在每次迭代中,将数字附加到一个列表 (
digits
) 和另一个列表开头的那个数字 (reversed_digits
) - 提取完所有数字后,比较两个列表
def palindrome(n):
digits = []
reversed_digits = []
while n > 0:
digit = n % 10
digits.append(digit)
reversed_digits.insert(0, digit)
n //= 10
return digits == reversed_digits
注意:这可能不是解决这个问题最有效的方法,但我认为它很容易理解。