02. Reverse String
🎯 leetcode - 344. Reverse String
🤔 私の答え
📌 質問する
1番の方法
📌 一つ.二重ポインタ交換の使用
🤔 私の答え
📌 質問する
- 파이썬 알고리즘 인터뷰 2번 문제
📌 名前の日付2020.01.14
📌 試行回数2 try
💡 Code1番の方法
class Solution:
def reverseString(self, s: List[str]) -> None:
s = s[::-1]
print(s)
2番の方法class Solution:
def reverseString(self, s: List[str]) -> None:
for i in range(int(len(s) / 2)):
s[i], s[len(s) - i - 1] = s[len(s) - i - 1], s[i]
print(s)
💡 トラブルシューティング方法1번 방법
- 슬라이싱을 이용하여 list를 거꾸로 뒤집었다.
2번 방법
- 앞에서부터 출발하는 인덱스가 list의 절반에 도달할 때까지 for문을 반복
- 앞에서부터 출발하는 인덱스는 i
- 뒤에서부터 출발하는 인덱스는 len(s) - 1 - i
- 내부 swap을 이용해 list 내부에서 처리하였다.
💡 新知1번
- list도 문자열처럼 슬라이싱으로 처리할 수 있다.
答えを間違える理由1번이 leetcode에서 오류가 떴다.
- 리스트 내부를 직접 조작하라는 공간적 제약(O(1)) 때문에 변수 할당 처리에 제약이 있었다.
- 책에 의하면 s[:] = s[::-1]의 트릭을 이용하여 처리하면 오류 없이 잘 동작한다고 한다.
😉 別の解釈📌 一つ.二重ポインタ交換の使用
class Solution:
def reverseString(self, s: List[str]) -> None:
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
print(s)
💡 新知- 투 포인터란, 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식이다.
- 위의 코드는 점점 더 범위를 좁혀가며 스왑하는 형태로 풀이한 방식이다.
📌 二.Pythonのreverse()関数class Solution:
def reverseString(self, s: List[str]) -> None:
s.reverse()
💡 新知- reverse()는 list에만 제공이 된다.
Reference
この問題について(02. Reverse String), 我々は、より多くの情報をここで見つけました https://velog.io/@eunseokim/02.-Reverse-Stringテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol