簡體   English   中英

反轉字符串。 每一個字都在逆轉

[英]Reversing A String. Every other word reversing

所以我有一個for循環,它正在反轉字符串中的每個其他單詞。 我無法確定導致這種情況的原因。

for (int i = 0; i < words.length; i++) 
{
    stringBuilder.append(words[(words.length-1)-i]);
    stringBuilder.reverse()
}
newMessage = stringBuilder.toString();
return Message

stringBuilder.reverse()反轉您在每次迭代時正在構建的整個字符串。

嘗試:

for (int i = 0 ; i < words.length ; i++) {
    String word = words[(words.length-1)-i];
    String reverse = new StringBuilder(word).reverse().toString();
    stringBuilder.append(reverse).append(" ");
}

甚至更簡單,最后倒車:

for (int i = 0 ; i < words.length ; i++) {
    stringBuilder.append(words[(words.length-1)-i]).append(" ");
}
newMessage = stringBuilder.reverse().toString();

根據評論進行編輯:

for (String w : words) {
    String reverse = new StringBuilder(w).reverse().toString();
    stringBuilder.append(reverse).append(" ");
}
newMessage = stringBuilder.toString();

stringBuilder.reverse(); 正在顛倒整個單詞注釋,該行和您的代碼不會反轉您的新消息

首先,你的循環比它需要的更復雜。 如果你想從最后開始反轉單詞,你應該只使用循環索引來做到這一點,你不需要(words.length-1)-i計算。

另一件事,當你在StringBuilder上調用reverse() ,你正在反轉整個字符串而不僅僅是附加的部分。 你可以做的是使用臨時StringBuilder來執行反轉,使用臨時String變量來將反轉與附加分開。

像這樣的東西:

StringBuilder reversedBuilder = new StringBuilder();
for (int i = words.length - 1; i >= 0; i --) 
{
    String reversed = reversedBuilder.append(words[i]).reverse().toString(); // reverse the word
    stringBuilder.append(reversed).append(" ");
    reversedBuilder.setLength(0); // clear the reversed
}

如果需要,可以在一行代碼中添加(添加注釋以便澄清):

for (int i = words.length - 1; i >= 0; i --) 
{
    stringBuilder.append(new StringBuilder()  // create a temp string builder
                            .append(words[i]) // add the current word to temp string builder
                            .reverse()        // reverse the current word in the temp string builder
                            .toString())      // add the reversed word to stringBuilder
                 .append(" ");                // add the space to stringBuilder
}
var string = "hello world";

function reverseWords(string) {
   var words = string.split(' '),
   finals = [];

   words.forEach(function(word) {
     finals.push(word.split('').reverse().join(''););
   });

   return finals.join(' ');
 }

 reverseWords(string); // "olleh dlrow"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM