복붙노트

[PYTHON] 파이썬 - 문자열에서 연속 된 경우에만 중복을 제거하는 방법?

PYTHON

파이썬 - 문자열에서 연속 된 경우에만 중복을 제거하는 방법?

'12233322155552'와 같은 문자열의 경우 중복을 제거하여 '1235'를 얻을 수 있습니다.

하지만 내가 계속 지키고 자하는 것은 '1232152'이며, 단지 연속적인 복제물 만 지우는 것입니다.

해결법

  1. ==============================

    1.Microsoft / Amazon의 면접 질문 유형 : 이것은 의사 코드이며, 실제 코드는 연습 문제로 남아 있습니다.

    Microsoft / Amazon의 면접 질문 유형 : 이것은 의사 코드이며, 실제 코드는 연습 문제로 남아 있습니다.

    for each char in the string do:
       if the current char is equal to the next char:
          delete next char
       else
         continue
    
    return string
    

    보다 높은 수준으로 시도해보십시오 (실제로 구현되지 않음).

    for s in string:
      if s == s+1:  ## check until the end of the string
         delete s+1
    
  2. ==============================

    2.

    import re
    answer = re.sub(r'(\d)\1+', r'\1', '12233322155552')
    
  3. ==============================

    3.힌트 : itertools 모듈은 매우 유용합니다. 특히 itertools.groupby의 한 기능은 다음과 같이 매우 유용 할 수 있습니다.

    힌트 : itertools 모듈은 매우 유용합니다. 특히 itertools.groupby의 한 기능은 다음과 같이 매우 유용 할 수 있습니다.

    문자열은 반복 가능하므로 수행 할 수있는 작업은 다음과 같습니다.

    use groupby to collect neighbouring elements
    extract the keys from the iterator returned by groupby
    join the keys together
    

    모두 하나의 깨끗한 라인에서 할 수 있습니다.

  4. ==============================

    4.itertools를 사용할 수 있습니다. 여기에 하나의 라이너가 있습니다.

    itertools를 사용할 수 있습니다. 여기에 하나의 라이너가 있습니다.

    >>> s = '12233322155552'
    >>> ''.join(i for i, _ in itertools.groupby(s))
    '1232152'
    
  5. ==============================

    5.우선, 파이썬 (Google "Python immutable string"이 명확하지 않은 경우)에서 문자열을 제거 할 수 없습니다.

    우선, 파이썬 (Google "Python immutable string"이 명확하지 않은 경우)에서 문자열을 제거 할 수 없습니다.

    M의 첫 번째 접근 방식은 다음과 같습니다.

    foo = '12233322155552'
    bar = ''
    for chr in foo:
        if bar == '' or chr != bar[len(bar)-1]:
            bar += chr
    

    또는 위의 itertools 힌트를 사용하십시오.

    ''.join([ k[0] for k in groupby(a) ])
    
  6. ==============================

    6.groupby +1. 수갑을 벗어, 뭔가 :

    groupby +1. 수갑을 벗어, 뭔가 :

    from itertools import groupby
    def remove_dupes(arg):
        # create generator of distinct characters, ignore grouper objects
        unique = (i[0] for i in groupby(arg))
        return ''.join(unique)
    

    파이썬 2.7.2에서 저를위한 요리

  7. ==============================

    7.

    number = '12233322155552'
    temp_list = []
    
    
    for item in number:   
       if len(temp_list) == 0:
          temp_list.append(item)
    
       elif len(temp_list) > 0:
          if  temp_list[-1] != item:
              temp_list.append(item)
    
    print(''.join(temp_list))
    
  8. ==============================

    8.이것은 방법 일 것입니다 :

    이것은 방법 일 것입니다 :

    def fix(a):
        list = []
    
        for element in a:
            # fill the list if the list is empty
            if len(list) == 0:list.append(element)
            # check with the last element of the list
            if list[-1] != element:  list.append(element)
    
        print(''.join(list))    
    
    
    a= 'GGGGiiiiniiiGinnaaaaaProtijayi'
    fix(a)
    # output => GiniGinaProtijayi
    
  9. ==============================

    9.

    t = '12233322155552'
    for i in t:
        dup = i+i
        t = re.sub(dup, i, t)
    

    최종 결과는 1232152로 얻을 수 있습니다.

  10. from https://stackoverflow.com/questions/11460855/python-how-to-remove-duplicates-only-if-consecutive-in-a-string by cc-by-sa and MIT license