swift 리트코드 문제풀이 - leetcode 344 문자열 뒤집기
문제
문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라.
예제1:
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
예제 2:
Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
문제를 보고 아 이번문제도 문자열을 뒤집는 문제구나 잠깐! 생각을 했음..
알고리즘 문제가 그렇게 간단할리 없지..
문제를 자세히 보면 리턴 없이! , 리스트 내부를 직접 조작! 이라는 말이 있다.
즉 이 문제는 새로운 배열을 할당하지 말고 배열의 포인터를 사용해서 배열 안의 문자를 거꾸로 만드는 문제다!
참고로 스위프트 함수의 인자는 상수로서 변경을 할 수 없다. 함수의 인자에 접근해서 값을 변경해주고 싶으면 인자뒤에 : 를 붙이고 inout이라는 키워드를 작성해 주어야 한다는것!
var inputArray: [Character] = ["h","e","l","l","o"]
func reverseString(_ s: inout [Character]) {
var length = s.count
var index = 0
while 0 < length {
if let lastElement = s.popLast() {
s.insert(lastElement, at: index)
}
length -= 1
index += 1
}
}
reverseString(&inputArray)
print("inputArray : \( inputArray ) ") //inputArray : ["o", "l", "l", "e", "h"]
풀이는 while문을 만들어서 입력받은 배열의 마지막의 문자를 꺼내서 제일 앞으로 보내주는데 배열의 개수 만큼 반복하게 끔 작성해서 완료!
함수에 인자를 전달할 때도 인자 앞에 &를 붙여서 주소를 전달 할 수 있도록 하면된다
그럼 끝!
https://leetcode.com/problems/reverse-string/
'자료구조&알고리즘 > leetcode 풀이' 카테고리의 다른 글
swift 리트코드 문제풀이 - leetcode 1 두 수의합 (0) | 2022.07.26 |
---|---|
swift 리트코드 문제풀이 - leetcode 49 그룹 애너그램 (0) | 2022.07.24 |
swift 리트코드 문제풀이 - leetcode 819 가장 흔한 단어 (0) | 2022.07.23 |
swift 리트코드 문제풀이 - leetcode 937 로그 파일 재정렬 (0) | 2022.07.22 |
swift 리트코드 문제 풀기 - leetcode 유효한 팰린드롬 (0) | 2022.07.20 |