leetcode 344.反転文字列
1631 ワード
入力した文字列を反転させる機能を持つ関数を作成します.
例 1:
例2:
考え方1:昨日、集合とフレームワークのCollectionsでArrayListの要素を反転できることを学んだばかりなので、文字列をtoCharArrayで文字配列に変換し、ArrayListに追加し、ツールクラスで反転してから変換すればいいだけです.
注意:文字配列を文字列に変換して使用します.
new String(char[] a); String.valueOf(char[] a);
構想2:やはり文字列が文字配列に変換された後、その場で置換し、2つのポインタを利用して、1つは配列の頭から自増し、1つは配列から尾自減し、2つの出会いを知って、2つの代表的な配列の要素を交換して、最後に文字列に変換します.
構想3:追加の配列を利用して、保留交換を行う.
例 1:
: "hello"
: "olleh"
例2:
: "A man, a plan, a canal: Panama"
: "amanaP :lanac a ,nalp a ,nam A"
考え方1:昨日、集合とフレームワークのCollectionsでArrayListの要素を反転できることを学んだばかりなので、文字列をtoCharArrayで文字配列に変換し、ArrayListに追加し、ツールクラスで反転してから変換すればいいだけです.
注意:文字配列を文字列に変換して使用します.
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);
}
}