1
def lastSubstring(s):
largest_character = max(set(s))
result = ''
for i, char in enumerate(s):
if char==largest_character:
result = max(result,s[i:])
return result
2
def findCircleNum(M):
if not M: return 0
n = size = len(M)
dic = {i:i for i in range(n)}
rank = {i:0 for i in range(n)}
def find(node):
if node!=dic[node]:
dic[node] = find(dic[node])
return dic[node]
for r in range(n):
for c in range(n):
if r!=c and M[r][c]==1:
x = find(r)
y = find(c)
if x!=y:
if rank[x]>rank[y]:
dic[y] = x
elif rank[x]<rank[y]:
dic[x] = y
else:
dic[y] = x
rank[x]+=1
size-=1
return size