我被要求解决以下问题:时间复杂度低于N^2,空间复杂度为O(N):
编写程序来反转字符串:
输入:- "Hello World" 输出:- "olleH dlroW"
我已经尝试了很多方法,但无论我尝试什么,都无法得出比N^2更低的时间复杂度。我的代码如下所示,您有任何建议吗?如何提出具有线性时间复杂度的解决方案?
注意:不允许使用内置方法。
编写程序来反转字符串:
输入:- "Hello World" 输出:- "olleH dlroW"
我已经尝试了很多方法,但无论我尝试什么,都无法得出比N^2更低的时间复杂度。我的代码如下所示,您有任何建议吗?如何提出具有线性时间复杂度的解决方案?
注意:不允许使用内置方法。
public static String stringReverser(String str) {
if (str == null || str.isEmpty()) {
throw new IllegalArgumentException();
}
if (str.length() < 2) {
return str;
}
String[] strArr = str.split(" ");
StringBuffer newHolder = new StringBuffer();
for (int i = 0; i < strArr.length; i++) {
int j = 0;
int len = strArr[i].length();
char[] newCharStr = strArr[i].toCharArray();
while (j < len) {
char temp = newCharStr[j];
newCharStr[j] = newCharStr[len - 1];
newCharStr[len - 1] = temp;
len--;
j++;
}
newHolder.append(String.valueOf(newCharStr));
if(i != strArr.length-1){
newHolder.append(" ");
}
}
return newHolder.toString();
}
return new StringBuilder(str).reverse().toString();
- Elliott Frisch