Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

사용자 정의 순서로 문자열을 정렬하는 Python 프로그램

<시간/>

하나의 영숫자 문자열 s가 있다고 가정합니다. 다음 조건에 따라 정렬해야 합니다.

  • 정렬된 모든 소문자는 대문자 앞에 놓입니다.

  • 정렬된 모든 대문자는 숫자 앞에 놓입니다.

  • 정렬된 모든 홀수는 정렬된 짝수보다 먼저 배치됩니다.

따라서 입력이 s ="HeLlo1234"와 같으면 출력은 eloHL1324

가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • f() 함수를 정의합니다. 시간이 걸립니다
  • 코드:=0
  • c가 대문자이면
    • 코드:=10^3
  • 그렇지 않고 c가 숫자일 때
    • 코드:=10^6
  • c의 ASCII가 짝수이면
    • 코드:=10^9
  • 반환 코드 + c의 ASCII
  • 기본 방법에서 다음을 수행합니다.
  • l :=f() 함수를 호출하여 s의 정렬된 목록 및 s의 각 문자 c 순서
  • l의 각 문자를 결합하고 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

def f(c):
   code = 0
   if c.isupper():
      code = 10 ** 3
   elif c.isdigit():
      code = 10 ** 6
      if ord(c) % 2 == 0:
         code = 10 ** 9
   return code + ord(c)

def solve(s):
   l = sorted(s, key=lambda c: f(c))
   return ''.join(l)

s = "HeLlo1234"
print(solve(s))

입력

"HeLlo1234"

출력

eloHL1324