LeetCode-07-逆文字列

入力文字列を逆にする役割を持つ関数を記述します。入力文字列は、文字配列char []の形式で指定されます。別の配列に余分なスペースを割り当てないでください。この問題を解決するには、入力配列をその場で変更し、O(1)の余分なスペースを使用する必要があります。配列内のすべての文字は、ASCIIコードテーブル内の印刷可能な文字であると想定できます。

例1:
入力:["h"、 "e"、 "l"、 "l"、 "o"]
出力:["o"、 "l"、 "l"、 "e"、 "h"]

例2:
入力:["H"、 "a"、 "n"、 "n"、 "a"、 "h"]
出力:["h"、 "a"、 "n"、 "n"、 " a "、" H "]

  1. 再帰呼び出し
  • 時間計算量:O(N)。
  • スペースの複雑さ:O(N)
import java.util.Scanner;

//反转字符串
public class day {
    
    
	public static void main(String[] args) {
    
    
		char [] str= {
    
    'a','b','c','d','e','f'};
		reverseString(str);
		System.out.println(str);		
	}
	  public void helper(char[] s, int left, int right) {
    
    
		    if (left >= right) return;
		    char tmp = s[left];
		    s[left++] = s[right];
		    s[right--] = tmp;
		    helper(s, left, right);
		  }
		  public static void reverseString(char[] s) {
    
    
		    helper(s, 0, s.length - 1);
		  }
		
	}
}

  1. ダブルポインタ方式
  • 時間計算量:O(N)。
  • スペースの複雑さ:O(1)
import java.util.Scanner;
//反转字符串
public class day {
    
    
	public static void main(String[] args) {
    
    
		char [] str= {
    
    'a','b','c','d','e','f'};
		reverseString(str);
		System.out.println(str);	
	}
	public static void reverseString(char[] s) {
    
    
		char temp;
		for(int i=0,j=s.length-1;i<j;i++,j--) {
    
    
			temp=s[i];
			s[i]=s[j];
			s[j]=temp;
		}
		
	}
}

おすすめ

転載: blog.csdn.net/TroyeSivanlp/article/details/108925541