📅  最后修改于: 2023-12-03 15:22:39.405000             🧑  作者: Mango
在编程中,回文数是一种非常有趣的数值类型。回文数指的是正着读和反着读结果是一样的数。比如121、1331等都是回文数。在一个给定的列表中,如何找出所有的回文数呢?下面给出一些例子和代码实现。
我们可以直接遍历整个列表,对于每个数值,判断其是否是回文数,并记录下来。判断回文数的方法可以将数字转为字符串后,利用字符串的切片反转来实现。
def is_palindrome(num):
return str(num) == str(num)[::-1]
def find_palindromes(numbers):
palindromes = []
for num in numbers:
if is_palindrome(num):
palindromes.append(num)
return palindromes
另外一个实现思路是将数字转为字符串后,将字符串拆分为两部分,一部分为左侧的数字字符串,另一部分为右侧的数字字符串,然后将右侧的数字字符串反转,最后比较左、右两部分是否相等即可。
def is_palindrome(num):
str_num = str(num)
mid = len(str_num) // 2
left, right = str_num[:mid], str_num[-mid:][::-1]
return left == right
def find_palindromes(numbers):
palindromes = []
for num in numbers:
if is_palindrome(num):
palindromes.append(num)
return palindromes
Java的实现思路与Python类似,但是Java的语法略微有些不同。
import java.util.ArrayList;
import java.util.List;
public class PalindromeNumbers {
public static boolean isPalindrome(int num) {
return String.valueOf(num).equals(new StringBuilder(String.valueOf(num)).reverse().toString());
}
public static List<Integer> findPalindromes(List<Integer> numbers) {
List<Integer> palindromes = new ArrayList<>();
for (Integer num : numbers) {
if (isPalindrome(num)) {
palindromes.add(num);
}
}
return palindromes;
}
}
无论是Python还是Java,实现的核心思路都是一样的,即判断一个数是否是回文数,然后将其加入到回文数列表中。回文数对于一些数值处理问题,如数字反转、数据加密等都有着很好的应用。