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