私はこの問題で2時間立ち往生しています。基本的に、文字列を逆にする必要があります(これは問題ありませんでした)。次に、n番目の文字ごとに交換します(これが行き詰まった場所です)。
これが私がこれまでに持っているものです:
public class StringMethods {
public static void main(String[] args) {
String s = "Hey there";
int n = 2;
System.out.println(reverseString(s));
System.out.println(reverseStringChallenge(s, n));
}
private static String reverseString(String s) {
String reversed = "";
for (int i = s.length() - 1; i >= 0; i--) {
reversed = reversed + s.charAt(i);
}
return reversed;
}
private static String reverseStringChallenge(String s, int n) {
String reversed = "";
String swapped = "";
for (int i = s.length() - 1; i >= 0; i--) {
reversed = reversed + s.charAt(i); // normal reverse
}
char [] charArray = reversed.toCharArray(); //Strings are immutable, convert string to char array
for(int i = 0; i < charArray.length; i++) {
if(i%n == 0) {
//this is where im stuck
}
}
return swapped;
}
}
文字列はJavaで不変であることを知っているので、反転した文字列をchar配列に変換してから配列をループする必要がありますが、ここで何をすべきかわかりません。
アドバイスをいただければ幸いです。それは私の頭をやっています。
編集:申し訳ありませんが、n番目の文字ごとにスワップするということは、n = 2と言うことです。その後、2番目の文字ごとに前の文字と交換されます。