【发布时间】:2022-11-23 01:14:10
【问题描述】:
我写了一个编码挑战。挑战的要求是颠倒句子中的特定单词=>仍然保持句子中单词的顺序但颠倒单词的字符。
输入样本是这样的:RemoteIo is awesome-Candiates pass interview-best candiates are selected。
以上输入的示例输出:
oIetomeR si emosewa
setaidnaC ssap weivretni
tseb setaidnac era detceles
如您所见,输入句子由 - 字符分隔,这意味着我们在上面的示例中有 3 个句子,句子只能包含字母字符和空格(两个单词之间有一个空格)
所以我的问题是如何优化下面的代码,并且有关于代码优化的任何理论/原则。我在Java中的代码实现:
public class Test1 {
public static void main (String[] args) throws java.lang.Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
// Put sentences to a String array.
String[] data = input.split("-");
// Loop throw sentence array
for(int i = 0; i < data.length; i++) {
// Put the words from the sentence to a String array.
String[] words = data[i].split(" ");
// Loop throw the word array
for(int w = 0; w < words.length; w++) {
// Revert the characters of each word
for (int j = words[w].length() - 1; j >=0; j--) {
if (j != 0) {
System.out.print(words[w].charAt(j));
} else {
System.out.print(words[w].charAt(j) + " ");
}
}
if ( w == words.length -1) {
System.out.println();
}
}
}
}
}
【问题讨论】:
-
像这样将打印命令与您的逻辑混合几乎总是一个坏主意。将单词映射到它们的反面,然后用空格连接它们,不要尝试打印空格,你只会让自己头疼。
-
您是否有理由相信您的代码优化不足?对我来说,这看起来非常合理。一个好的规则是选择一个好的算法,但在需要之前不要担心进一步的优化。
-
@EdwardPeters 我的审阅者要求我优化我的代码,所以我不知道从哪里开始。
-
“审阅者”作为工作中的代码审阅者,同学......?我会让你做很多清理工作,但我质疑任何人告诉你这需要从性能的角度进行优化的判断。
标签: java algorithm optimization data-structures