我最近在一家XXX公司接受了采访,被要求写一个代码来反转输入中的单词。
输入:“我的名字叫乔”
输出:“ yM eman si eoJ”
我在下面编写了代码,该代码在通过所有测试用例的情况下成功编译并运行。
下面是我的代码(使用的编程语言-Java):
public String reverseWords(String s) {
StringBuilder sb = new StringBuilder();
s += ' ';
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i) == ' ' && s.charAt(i-1) != ' ') {
if (sb.length()>0) sb.append(' ');
for (int j = i-1; j >= 0 && s.charAt(j) != ' '; j--) sb.append(s.charAt(j));
}
}
return sb.toString();
}
然后,采访者询问了我说过的代码的时间和空间复杂度:空间复杂度看起来是O(N)(其中N是输入中的字符数),时间复杂度是二次方。面试官似乎并不满意。
以上代码的时间和空间复杂度是多少?而且,采用任何更好的方法进行反馈都是很好的。预先感谢!