숫자가 아닌 소문자 또는 대문자로만 구성된 문자열 s가 있다고 가정합니다. 소문자와 대문자가 각각 같은 순서를 따르는지 여부를 확인해야 합니다. 따라서 한 문자가 소문자로 두 번 이상 나타나면 대문자로 동일한 문자가 발생하는 것과 동일합니다.
따라서 입력이 s ="piPpIePE"와 같으면 소문자와 대문자의 발생이 동일하고 소문자와 대문자도 같은 순서이므로 출력은 True입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 소문자 :=빈 문자열, 대문자 :=빈 문자열
- 0 ~ s - 1 크기 범위의 i에 대해
- s[i]가 대문자이면
- 대문자 :=대문자 연결 s[i]
- 그렇지 않으면
- 소문자 :=소문자 연결 s[i]
- s[i]가 대문자이면
- to_upper :=소문자를 대문자로 변환
- to_upper가 대문자와 같으면 true를 반환하고 그렇지 않으면 false를 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(s) : lowercase = "" uppercase = "" for i in range(len(s)) : if ord(s[i]) >= 65 and ord(s[i]) <= 91 : uppercase += s[i] else : lowercase += s[i] to_upper = lowercase.upper() return to_upper == uppercase s = "piPpIePE" print(solve(s))
입력
"piPpIePE"
출력
True