输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数(最后一个不为0)。

例如:输入

9876673

返回:

37689


解法1

分析:set()集合虽然有去重功能,但是set的元素是无须存放的,所以存入的元素顺序可能与读取的顺序不一致,所以不能使用set

          dict字典在设置值时,可以输入重复的key值,但是最终key值会去重,每个只保留一个值,所以利用dict的功能

def func(data):
    list_data =[i for i in(data)][::-1] #拆分为list并倒叙排序
    print(list_data)
    # new_list_data =list(set(list_data)) #不能使用set去重,因为去重后,顺序可能改变

    #通过dict的key值也会自动去重的功能
    dict_data ={}
    for one in list_data:
        dict_data[one] = 0
    new_list_data =dict_data.keys()
    print(eval(''.join(new_list_data)))  #eval()可以将string数据去引号,返回内部的数据


解法2: 参考的一个大佬的,哎,其实上面自己想复杂了
直接对string进行拆分,重新拼接,在拼接的是否判断一下即可
上菜:

def func1(data):  #data是input()接收的,所以data是带双引号的int
    new_string =''
   #直接利用列表推导式对字符串进行拆分
    for i in [one for one in data][::-1]:  #先拆分,在倒序。此时没有元素还是string类型
        if i not in new_string:            #如果不存在,在拼接进去
            new_string += i
    print(eval(new_string))                #最后要通过eval()将string转为int

 



posted on 2021-03-07 20:40  jesse_zhao  阅读(814)  评论(0编辑  收藏  举报

导航