하나의 영숫자 문자열 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