반복 문자 배열 반전 - Java-Leetcode

8781 단어 귀속

반복 문자 배열 반전 - Java-Leetcode


(저는 귀환 방면에 채소닭이 좀 있기 때문에 leetcode에 귀환 문제를 크게 칠하려고 합니다.)

문자열 반전


입력한 문자열을 반전시키는 함수를 작성합니다.입력 문자열은 문자 배열char[]로 표시됩니다.
다른 그룹에 추가 공간을 할당하지 마십시오. 입력 그룹을 제자리에서 수정하고 O (1) 의 추가 공간을 사용하여 이 문제를 해결해야 합니다.
배열의 모든 문자가 ASCII 코드 테이블의 인쇄 가능한 문자라고 가정할 수 있습니다.
예1: ["h", "e", "l", "l", "o"] 출력: ["o", "l", "l", "e", "h"] 예2: ["H", "a", "n", "n", "n", "a", "h"] 출력: ["h", "a", "n", "n", "a", "H"]
먼저 코드:메서드1:
class Solution {
    public void reverseString(char[] s) {
        int len = s.length;
        // 
        if(len <= 1){
            return;
        }else{
            re(s,0,len-1); 
        }   
    }
    //start ,len 
    public void re(char[] s,int start,int len){  

        if(len-start>2){
            re(s,start+1,len-1);
        }
        char temp;
        temp = s[len];
        s[len]=s[start];
        s[start]=temp;
    }

}

방법2:
class Solution {
    public void reverseString(char[] s) {
        int len = s.length;
        if(len <= 1){
            return;
        }else{
            re(s,0); 
        }   
    }
    
    public void re(char[] s,int p){    //p 
    	// ,p=s.length/2 
    	// ,p-s.length/2=1
    	// 
        if(p>=s.length/2){
            return;
        }
        char temp;
        temp = s[s.length-1-p];
        s[s.length-1-p]=s[p];
        s[p]=temp;
        re(s,p+1);
    }
}

첫 번째 방법은 앵만공루라는 블로거의 답을 참고하여 간단한 수정과 최적화를 했다.두 번째 방법은 내가 생각한 것이다.두 가지 방법의 사상은 기본적으로 일치하는데, 내 자신의 방법은 수조 아래에 표시하는 데 좀 더 복잡하다.
원래 나는 원래 준 그 방법을 직접 사용할 수 있을까 해서 시도해 보았는데 아무리 써도 전참이 이미 정해진 수조를 수정할 수 없었고 결국 귀환을 멈출 수가 없어서 이런 생각을 포기했다.만약 다른 어른들이 원래의 방법으로 직접 귀속할 수 있다는 것을 발견하면 답을 얻을 수 있으니 아낌없이 가르쳐 주십시오.

좋은 웹페이지 즐겨찾기