숫자 n이 있고 시퀀스에서 n번째 값을 찾지 못했다고 가정합니다. 순서는 아래와 같습니다 -
- xxy
- xxxxxy
- yxxyxx
- xyyxyy
- xyyxyyxyyxyy
- ...
다음 값을 생성하려면 xxy를 첫 번째 항으로 시작하는 다음 규칙을 따라야 합니다. -
-
패턴이 시작되면 두 배로 늘리십시오(문자열을 자체적으로 연결).
-
마지막 작업이 두 배가 되었을 때 반대로 하십시오.
-
마지막 작업이 역전될 때 모든 xs를 ys로 또는 그 반대로 교환하십시오.
-
이 단계를 반복합니다.
따라서 입력이 n =5와 같으면 출력은 "yyxyyxyyxyyx"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- i :=0
- ret :="xxy"
- 내가
- i mod 3이 0과 같으면
- ret :=ret + ret
- 그렇지 않으면 i mod 3이 1과 같을 때
- ret :=인덱스 0에서 end-1까지 ret의 하위 배열
- 그렇지 않으면
- new_stringy :=빈 문자열
- ret의 각 c에 대해 다음을 수행합니다.
- c가 "x"와 같으면
- new_stringy :=new_stringy "y" 연결
- 그렇지 않으면
- new_stringy :=new_stringy "x" 연결
- c가 "x"와 같으면
- ret :=new_stringy
- 나는 :=나는 + 1
- i mod 3이 0과 같으면
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s): i = 0 ret = "xxy" while i < s: if i % 3 == 0: ret += ret elif i % 3 == 1: ret = ret[::-1] else: new_stringy = "" for c in ret: if c == "x": new_stringy += "y" else: new_stringy += "x" ret = new_stringy i += 1 return ret ob = Solution() print(ob.solve(5))
입력
5
출력
yyxyyxyyxyyx