Hướng dẫn python string deduplication - chuỗi trùng lặp python

Trước hết, chức năng

org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)

%timeit org_deduplicate2(s,' ')
100000 loops, best of 3: 3.4 µs per loop
1 của bạn thực sự rất nhanh. Nhưng có thể có một số cải tiến được thực hiện để làm cho nó thậm chí còn nhanh hơn. Tôi đã
org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)

%timeit org_deduplicate2(s,' ')
100000 loops, best of 3: 3.4 µs per loop
2 hóa chức năng của bạn và gọi nó là
org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)

%timeit org_deduplicate2(s,' ')
100000 loops, best of 3: 3.4 µs per loop
3 (bên dưới). Bây giờ trong một thời gian kiểm tra (sử dụng
org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)

%timeit org_deduplicate2(s,' ')
100000 loops, best of 3: 3.4 µs per loop
4 của Ipython):

Show
    s = 'this is   an   irritating string with  random spacing  .'
    
    org_deduplicate = lambda s,c: c.join([substring for substring in s.strip().split(c) if substring])
    
    %timeit org_deduplicate(s,' ')
    100000 loops, best of 3: 3.59 µs per loop
    

    Nhưng

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    5 thực sự không cần thiết và thậm chí có thể cung cấp cho bạn kết quả bất ngờ (nếu bạn không được lặp lại khoảng trắng) để chúng tôi có thể thử:

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    

    Điều này tăng tốc mọi thứ lên một chút nhưng nó không phải là tất cả ấn tượng. Hãy thử một cách tiếp cận khác ... Biểu thức thông thường. Đây cũng rất tốt vì chúng cung cấp cho bạn sự linh hoạt để chọn bất kỳ biểu thức chính quy nào làm "nhân vật" của bạn để sao chép (không chỉ một char duy nhất):

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    

    Cái thứ hai nhanh hơn nhưng thậm chí không gần với chức năng ban đầu của bạn. Có vẻ như các hoạt động chuỗi thông thường nhanh hơn các hàm

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    6. Điều gì sẽ xảy ra nếu chúng ta thử zipping thay thế (sử dụng
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    7 nếu làm việc với Python 2):

    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    

    Vẫn không cải thiện. Phương pháp ZIP làm cho quá nhiều chất nền làm cho việc làm

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    8 chậm. Được rồi, hãy thử thêm ... những gì về
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    9 được gọi là đệ quy:

    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    

    Không tệ, đó dường như là người chiến thắng của chúng tôi. Nhưng chỉ cần chắc chắn, hãy thử nó chống lại chức năng ban đầu của chúng tôi với một chuỗi đầu vào thực sự dài:

    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    

    Yup, có vẻ như nó tỷ lệ độc đáo. Nhưng hãy thử thêm một bài kiểm tra, bộ ghép đệ quy chỉ loại bỏ các ký tự trùng lặp có độ dài 2 mỗi lần được gọi. Vì vậy, nó vẫn làm tốt hơn với các ký tự trùng lặp dài:

    s3 = 'this is                       an                        irritating string with                                  random spacing  .'
    
    %timeit rec_deduplicate(s3,' ')
    100000 loops, best of 3: 9.93 µs per loop
    
    %timeit org_deduplicate(s3,' ')
    100000 loops, best of 3: 8.99 µs per loop
    

    Nó sẽ mất một số lợi thế của nó khi có các chuỗi dài các ký tự lặp đi lặp lại để loại bỏ.

    Tóm lại, sử dụng chức năng ban đầu của bạn (với một vài điều chỉnh có thể) nếu chuỗi của bạn sẽ có các phần dài các ký tự lặp lại. Nếu không, phiên bản đệ quy là nhanh nhất.

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    4
    s3 = 'this is                       an                        irritating string with                                  random spacing  .'
    
    %timeit rec_deduplicate(s3,' ')
    100000 loops, best of 3: 9.93 µs per loop
    
    %timeit org_deduplicate(s3,' ')
    100000 loops, best of 3: 8.99 µs per loop
    
    9
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    7Examples:

    Đầu vào: GeekSforGeeks & nbsp; đầu ra: efgkors geeksforgeeks 
    Output : efgkors

    Vấn đề này có giải pháp hiện tại Vui lòng tham khảo Xóa tất cả các bản sao khỏi một chuỗi đã cho. & NBSP;

    Phương pháp 1: & NBSP; 

    Python3

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    0
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    1
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    2
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    3

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    4
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    5
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    7

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    9
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    0
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    1
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    2
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    4

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    4
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    6
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    7

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    9
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    1
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    4

    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    4
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    5
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    8
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    9

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    3

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    5
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    2
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    7
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    8
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    4

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    5
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    2
    s3 = 'this is                       an                        irritating string with                                  random spacing  .'
    
    %timeit rec_deduplicate(s3,' ')
    100000 loops, best of 3: 9.93 µs per loop
    
    %timeit org_deduplicate(s3,' ')
    100000 loops, best of 3: 8.99 µs per loop
    
    4
    s3 = 'this is                       an                        irritating string with                                  random spacing  .'
    
    %timeit rec_deduplicate(s3,' ')
    100000 loops, best of 3: 9.93 µs per loop
    
    %timeit org_deduplicate(s3,' ')
    100000 loops, best of 3: 8.99 µs per loop
    
    5
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    4

    Đầu ra

    Without Order =  foskerg
    With Order =  geksfor
    

    Độ phức tạp về thời gian: O (N) Không gian phụ trợ: O (N)
    Auxiliary Space: O(n)

    Phương pháp 2: & NBSP; 

    Python3

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    4
    s3 = 'this is                       an                        irritating string with                                  random spacing  .'
    
    %timeit rec_deduplicate(s3,' ')
    100000 loops, best of 3: 9.93 µs per loop
    
    %timeit org_deduplicate(s3,' ')
    100000 loops, best of 3: 8.99 µs per loop
    
    9
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    7

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    Without Order =  foskerg
    With Order =  geksfor
    
    3
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    1
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    2
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    Without Order =  foskerg
    With Order =  geksfor
    
    8

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    Without Order =  foskerg
    With Order =  geksfor
    
    3
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    
    2

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    5
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    2
    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    
    6
    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    
    7

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    
    9
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    1

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    8
    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    3
    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    4
    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    5
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    9

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    8
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    4
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    00
    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    5
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    02

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    03
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    04

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    8
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    06
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    9

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    03
    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    
    9
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    
    9
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    12
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    13

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    
    8
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    5
    zip_deduplicate = lambda s,c: ''.join(s1 for s1,s2 in zip(s,s[1:]) if s1!=c or s1!=s2)
    
    %timeit zip_deduplicate(s,' ')
    100000 loops, best of 3: 12.9 µs per loop
    
    2
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    17
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    18

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    3

    s3 = 'this is                       an                        irritating string with                                  random spacing  .'
    
    %timeit rec_deduplicate(s3,' ')
    100000 loops, best of 3: 9.93 µs per loop
    
    %timeit org_deduplicate(s3,' ')
    100000 loops, best of 3: 8.99 µs per loop
    
    9
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    6
    Without Order =  foskerg
    With Order =  geksfor
    
    8

    Đầu ra

    Without Order: kogerfs
    With Order: g
    With Order: ge
    With Order: ge
    With Order: gek
    With Order: geks
    With Order: geksf
    With Order: geksfo
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    With Order: geksfor
    

    Độ phức tạp về thời gian: O (N) Không gian phụ trợ: O (N) O(n)
    Auxiliary Space: O(n)

    Đặt hàng và FromKeys () đặt hàng làm gì?

    Một đơn đặt hàng là một từ điển nhớ rằng thứ tự của các khóa được chèn đầu tiên. Nếu một mục mới ghi đè lên một mục nhập hiện có, vị trí chèn ban đầu không thay đổi.

    Ví dụ: xem đoạn mã bên dưới: & nbsp;

    Python3

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    0
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    1
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    2
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    3

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    29
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    31

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    33
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    36

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    38
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    41

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    43
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    46

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    48
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    51

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    53
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    56

    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    5
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    58

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    59
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    61

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    62
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    33
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    36

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    62
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    38
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    41

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    62
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    43
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    46

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    62
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    48
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    51

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    62
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    53
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    56

    s2 = s*100000
    
    %timeit rec_deduplicate(s2,' ')
    10 loops, best of 3: 64.6 ms per loop
    
    %timeit org_deduplicate(s2,' ')
    1 loop, best of 3: 209 ms per loop
    
    5
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    88

    Đầu ra

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
    

    Độ phức tạp về thời gian: O (N) Không gian phụ trợ: O (N)
    Auxiliary Space: O(1)

    Đặt hàng và FromKeys () đặt hàng làm gì? creates a new dictionary with keys from seq and values set to value and returns list of keys, fromkeys(seq[, value]) is the syntax for fromkeys() method. Parameters :

    • Một đơn đặt hàng là một từ điển nhớ rằng thứ tự của các khóa được chèn đầu tiên. Nếu một mục mới ghi đè lên một mục nhập hiện có, vị trí chèn ban đầu không thay đổi. This is the list of values which would be used for dictionary keys preparation.
    • Ví dụ: xem đoạn mã bên dưới: & nbsp; This is optional, if provided then value would be set to this value.

    Ví dụ: xem đoạn mã bên dưới: & nbsp;

    Python3

    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    0
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    1
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    2
    import re
    
    re_deduplicate = lambda s,c: re.sub(r'(%s)(?:\1)+' %c, '\g<1>',  s)
    re_deduplicate2 = lambda s,c: c.join(re.split('%s+'%c,s))
    
    %timeit re_deduplicate(s,' ')
    100000 loops, best of 3: 13.8 µs per loop
    
    %timeit re_deduplicate2(s,' ')
    100000 loops, best of 3: 6.47 µs per loop
    
    3

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    29
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    31

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    33
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    36

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    38
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    41

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    43
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    46

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    32
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    48
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    34
    def rec_deduplicate(s,c):                                                                             
        if s.find(c*2) != -1:   
            return rec_deduplicate(s.replace(c*2, c),c)
        return s
    
    %timeit rec_deduplicate(s,' ')
    100000 loops, best of 3: 2.83 µs per loop
    
    6
    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    51

    Đầu ra

    org_deduplicate2 = lambda s,c: c.join(substring for substring in s.split(c) if substring)
    
    %timeit org_deduplicate2(s,' ')
    100000 loops, best of 3: 3.4 µs per loop
    
    0

    Độ phức tạp về thời gian: O (N) Không gian phụ trợ: O (N)
    Auxiliary Space: O(1)

    Đặt hàng và FromKeys () đặt hàng làm gì?Shashank Mishra (Gullu). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to . See your article appearing on the GeeksforGeeks main page and help other Geeks.