📜  列表中的所有回文数(1)

📅  最后修改于: 2023-12-03 15:22:39.405000             🧑  作者: Mango

列表中的所有回文数

在编程中,回文数是一种非常有趣的数值类型。回文数指的是正着读和反着读结果是一样的数。比如121、1331等都是回文数。在一个给定的列表中,如何找出所有的回文数呢?下面给出一些例子和代码实现。

Python实现
方法一

我们可以直接遍历整个列表,对于每个数值,判断其是否是回文数,并记录下来。判断回文数的方法可以将数字转为字符串后,利用字符串的切片反转来实现。

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实现

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,实现的核心思路都是一样的,即判断一个数是否是回文数,然后将其加入到回文数列表中。回文数对于一些数值处理问题,如数字反转、数据加密等都有着很好的应用。