• 数字字符串变换


    1.

    0285219430826
    4
    0 2
    2 3
    8 4
    4 7
    3375319733736
    import copy
    def dfs(matrix,visited,i,cnt,id):
        for j in range(len(matrix)):
            if matrix[i][j]==1 and visited[j]==0:
                visited[j]=1
                id[j]=cnt
                dfs(matrix,visited,j,cnt,id)
    if __name__ == '__main__':
        string =input()
    #     string = '0285219430826'
        n=10
        m=int(input())
        data = []
        for _ in range(m):
            data.append(list(map(int,input().split())))
            pass
    #     data = [[0,2],[2,3],[8,4],[4,7]]
        matrix=[[0]*n  for _ in range(n)]
        visited=[0]*n  # 记录每个节点是否被访问过
        id=[-1]*n # 记录每个节点对应的联通分区编号
        for i in range(n):
            matrix[i][i]=1
        for i,j in data:
            matrix[i][j]=1
            matrix[j ][i] = 1
        cnt=0
        for i in range(len(matrix)):
            if visited[i]==0:
                dfs(matrix,visited,i,cnt,id)
                cnt+=1
        #print(cnt,id)
        
        #print(len(set(id)))
        dic={}
        for idx,ele in enumerate(id):
            dic.setdefault(ele,[])
            dic[ele].append(idx)
        #print(dic)
        new_dic = copy.deepcopy(dic)
        for key,val in new_dic.items():
            if len(val)<2:
                del dic[key]
        #print(dic)  # dic是连通分量字典
        lst = []
        for i in range(m):
            lst.append(data[i][0])
            lst.append(data[i][1])
        
        idx_dic = {}
        for i,ele in enumerate(lst):
            idx_dic.setdefault(ele,i)
            idx_dic[ele]=i
    #     求出每一个连通分量的最大索引值对应的数字
        max_idx_num=[]
        for k,v in dic.items():
            temp=[]
            for ele in v:
                temp.append((ele,idx_dic[ele]))
            max_idx_num.append( sorted(temp,key=lambda x:x[1])[-1][0])
        new_string = ""
        for jdx,ele in enumerate(string):
            flag=True
            for i,kv in enumerate(dic.items()):
                if int(ele) in kv[1]:
                    new_string+=str(max_idx_num[i])
                    flag=False
                    break
            if flag:
                new_string+=string[jdx]
        print(new_string)
                    
  • 相关阅读:
    34、JS/AJAX
    33、mybatis(二)
    32、mybatis
    31、springmvc(注解)
    30、springmvc
    29、Oralce(五)
    Spring学习之路-SpringBoot简单入门
    Spring学习之路-从放弃到入门
    心情日记
    Spring学习之路-从入门到放弃
  • 原文地址:https://www.cnblogs.com/sunupo/p/13561911.html
Copyright © 2020-2023  润新知