leetcode 344.反転文字列


入力した文字列を反転させる機能を持つ関数を作成します.
例 1:
  : "hello"
  : "olleh"

例2:
  : "A man, a plan, a canal: Panama"
  : "amanaP :lanac a ,nalp a ,nam A"

考え方1:昨日、集合とフレームワークのCollectionsでArrayListの要素を反転できることを学んだばかりなので、文字列をtoCharArrayで文字配列に変換し、ArrayListに追加し、ツールクラスで反転してから変換すればいいだけです.
注意:文字配列を文字列に変換して使用します.
 
  • new String(char[] a);
  • String.valueOf(char[] a);
  • class Solution {
        public String reverseString(String s) {
            char[] a = s.toCharArray();
    		List list = new ArrayList<>();
    		for(char i:a) {
    			list.add(i);
    		}
    		Collections.reverse(list);
    		for(int i = 0;i < a.length;i++) {
    			a[i] = list.get(i);
    		}
    		return String.valueOf(a);
        }
    }

    構想2:やはり文字列が文字配列に変換された後、その場で置換し、2つのポインタを利用して、1つは配列の頭から自増し、1つは配列から尾自減し、2つの出会いを知って、2つの代表的な配列の要素を交換して、最後に文字列に変換します.
    class Solution {
        public String reverseString(String s) {
           if(s == "") {
    			return null;
    		}
    		char[] a = s.toCharArray();
    		char temp;
    		int l = 0,r = a.length-1;
    		while(l < r) {
    			temp = a[l];
    			a[l] = a[r];
    			a[r] = temp;
    			l++;
    			r--;
    		}
    		return new String(a);
        }
    }

     構想3:追加の配列を利用して、保留交換を行う.
    class Solution {
        public String reverseString(String s) {
            char[] chars = s.toCharArray();
            char[] newString = new char[chars.length];
            for (int i = chars.length - 1, t = 0; i >= 0; i--, t++) {
                newString[t] = chars[i];
            }
            return new String(newString);
        }
    }