python求解比一个给定的数字大的最小对称数

题目:

    题目是网上看到的,意思是:给定一个数字,求解比这个数字大的最小的对称数字,如:比10大的最小的对称数字为11,比111大的最小的对称数字为:121,比9999大的最小对称数字为:10001,以此类推

思路:

    这个明显就是一个回文数的求解问题,只是加上了数的大小的条件限制而已

具体实现如下:

#!usr/bin/env python  
#encoding:utf-8  
  
''' 
__Author__:沂水寒城 
功能:寻找比指定数字大的最小对称数
''' 


def huiwen(one_num):  
    ''' 
    输入字符串,判断是否是回文序列,返回布尔值 
    '''  
    one_str=str(one_num)
    length=len(one_str)  
    if length%2==0:  
        half=length/2  
        first_str=one_str[:half]  
        second_str=''.join(list(one_str[half:])[::-1])  
        if first_str==second_str:  
            return True   
        else:  
            return False  
    else:  
        half=(length+1)/2  
        first_str=one_str[:half-1]  
        second_str=''.join(list(one_str[half:])[::-1])  
        if first_str==second_str:  
            return True   
        else:  
            return False  


def find_min_duichen_num(num):
    '''
    寻找比num大的最小的对称数字,即回文数字
    '''
    num+=1
    while not huiwen(num):
        num+=1
    return num


if __name__ == '__main__':
    num_list=[10,23,44,100,731,1220,9999,12222]
    for one_num in num_list:
        print '比{0}大的最小对称数字为:{1}'.format(one_num, find_min_duichen_num(one_num))


结果如下:


比10大的最小对称数字为:11
比23大的最小对称数字为:33
比44大的最小对称数字为:55
比100大的最小对称数字为:101
比731大的最小对称数字为:737
比1220大的最小对称数字为:1221
比9999大的最小对称数字为:10001
比12222大的最小对称数字为:12321

    打印出来的那一刻突然感觉还是挺好玩的

你可能感兴趣的:(面试工作,编程技术)