gpt4 book ai didi

java - 如何反转字符串中的每个字符?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:02:02 25 4
gpt4 key购买 nike

class Solution {
public String reverseWords(String s) {
int count = 0;
int current = 0;
StringBuilder build = new StringBuilder();
for(int i = 0; i< s.length(); i++){
count++;
current = count;
if(s.charAt(i) == ' '){
while(current > 0){
build.append(s.charAt(current - 1));
current--;
}
build.append(s.charAt(i));
}


}
return build.toString();
}
}

我无法理解为什么这不起作用。我经历了整个代码几次,但似乎有问题。

输入:“让我们参加 LeetCode 竞赛”我的回答:"s'teL ekat s'teL edocteeL ekat s'teL "正确答案:"s'teL ekat edoCteeL tsetnoc"怎么回事?

最佳答案

有几个问题:

  • 您将 current 设置为当前位置,然后向下迭代到 0 个追加字符。您不是下降到 0,而是迭代到最后一个单词的开头。或者,迭代直到上一个 ' ' 字符。

  • 您只在看到 ' ' 字符后才添加内容。句子末尾会发生什么?当 i 遍历最后一个单词中的字母时,将不再有 ' ' 字符,因此最后一个单词永远不会被附加。要处理这种情况,您需要在 for 循环之后添加一些逻辑来检查是否有未写入的单词,并将其反向追加。

一个更简单的方法是利用 StringBuilder 在某个位置插入字符的能力。您可以跟踪当前单词的开始位置,当你遍历字符时,如果不是' '则插入,或者附加一个 ' ' 并重置插入位置。

StringBuilder build = new StringBuilder();
int current = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
build.append(' ');
current = i + 1;
} else {
build.insert(current, c);
}
}
return build.toString();

关于java - 如何反转字符串中的每个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com