我试图在不使用 split 功能的情况下反转句子中的字符。我真的很接近,但我错过了最后一封信。有人可以指出我正确的方向吗?现在它将“This is a new sentence”打印为“sihT si a wen cnetnes”我还包含了 if(start == 0) 因为程序会跳过初始空格字符,但我没有不明白为什么?
static String reverseLetters(String sentence)
StringBuilder reversed = new StringBuilder("");
int counter = 0;
int start = 0;
String word;
for(int i = 0; i <= sentence.length()-1 ; i++ )
{
if(sentence.charAt(i)== ' '|| i == sentence.length()-1 )
{
StringBuilder sb = new StringBuilder("");
sb.append(sentence.substring(start,i));
if(start == 0)
{
start = i;
word = sb.toString();
reversed.append(reverseChar(word));
reversed.append(' ');
}
else
{
start = i;
word = sb.toString();
reversed.append(reverseChar(word));
}
}
return reversed.toString();
}
static String reverseChar (String word)
{
StringBuilder b = new StringBuilder("");
for(int idx = word.length()-1; idx >= 0; idx -- )
{
b.append(word.charAt(idx));
}
return b.toString();
}
最佳答案
start
表示wordStart
。由于 i 指向空格,下一个 wordStart 应该指向 i 之后。- 因此最后一个
i
应该指向最后一个单词 char 之后,应该是length()
- if-then-else 过于宽泛;在一种情况下必须添加一个空格:我指向空格。
可以无条件循环,并在 i == length() 中中断循环代码。
关于java - 句子中的反转字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861995/