私は文字列中の単語を逆にしようとしています。入力が予想される出力がある文の中の単語を逆にする
The quick brown fox
、
fox brown quick The
私はシンプルalgortihmを以下のよである場合、これは、文全体を逆にして、バックの言葉を逆に。 これは私のコードです。
public static void reverseWords(char[] s) {
reverse(s);
int start = 0;
for (int i = 0; i < s.length ; i++) {
if(s[i] == ' '){
indexedReverse(s, start, i);
start = i+1;
}
}
}
private static void reverse(char[] s){
int len = s.length;
for(int i=0; i< len/2 ; i++){
char temp = s[i];
s[i] = s[len -1 -i];
s[len - 1- i] = temp;
}
}
private static void indexedReverse(char[] s, int start, int end){
for (int j = start; j <end/2; j++){
char temp = s[j];
s[j] = s[end - 1 - j];
s[end -1 -j] = temp;
}
}
public static void main(String[] args) {
String str = "The quick brown fox";
char[] s = str.toCharArray();
reverseWords(s);
String newStr = new String(s);
System.out.println(newStr);
}
問題がindexedReversed()関数は、最初の単語を一度だけforループに入るということですし、それは完全にループをスキップします。私はここで間違って何をしていますか?私はそれは価値がある何のためにあるの、
fox nworb kciuq ehT
あなたは、 "正規表現の周りに文字列を分割" してからちょうどを逆方向に反復していないのはなぜその配列? –
それもできますが、なぜ私のロジックが働いていないのか理解したい。 – Clockwork
@ DarkV1あなたが何を意味しているのか正確には分かりません。 – Clockwork