LeetCode - 344. Reverse String(Two Pointers, String ,Recursion)

YAMAMAMO·2022년 2월 12일
0

LeetCode

목록 보기
23/100

문제

문자열을 반전하는 함수를 작성합니다. 입력 문자열은 문자 s의 배열로 제공됩니다.

O(1) 추가 메모리로 입력 배열을 수정하여 이 작업을 수행해야 합니다.

Write a function that reverses a string. The input string is given as an array of characters s.
You must do this by modifying the input array in-place with O(1) extra memory.

Example 1:

Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Example 2:

Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

https://leetcode.com/problems/reverse-string/

풀이

자바입니다.
1.투포인터

  • 투포인터를 사용합니다. i는 배열의 처음, j는 배열의 길이 입니다.
  • i, j-1-i 위치의 값을 변경합니다.
    ex) i=0 일 때 첫번째 값과 마지막 값을 변경하게 됩니다.
class Solution {
    public void reverseString(char[] s) {
        char tmp;
        int j = s.length;
        for(int i=0;i<j/2;i++){
            tmp = s[i];
            s[i] = s[j-1-i];
            s[j-1-i]=tmp;
        }
    }
}

2.재귀

class Solution {
    public void reverseString(char[] s) {
        if(s.length==1) return;
        reverse(s, 0);
    }
    
    public void reverse(char[] s, int i){
        int j = s.length;
        if(i>=j/2) return;
        
        char tmp = s[i];
        s[i] = s[j-1-i];
        s[j-1-i] = tmp;
        
        reverse(s, ++i);
    }
}
profile
안드로이드 개발자

0개의 댓글