我想要反转一个字符串,我知道有成千上万的例子,但是我想自己做这个工作并且我创建了这个,但它没有正常工作。
public String ReverseString(String str){
str = str.toLowerCase();
char normalArr[] = str.toCharArray();
char reversedArr[] = new char[str.length()];
for (int i=str.length()-1; i<=0; i--){
int count = 0;
reversedArr[count] = normalArr[i];
count++;
}
String retValue = new String(reversedArr);
return retValue;
}
答案 0 :(得分:1)
查看循环的条件 - 它应该是i >= 0
此外 - 您的解决方案分配了一个不必要的数组(有些算法使用单个数组执行此操作,但不是您的) - 我认为您应该努力编写程序以获得良好的性能。
答案 1 :(得分:1)
除了@zaskes的回答,你需要在循环之前int count = 0;
,而不是在里面。
答案 2 :(得分:0)
这是一个执行反向逻辑的实现:
StringBuffer reversed = new StringBuffer(str.length());
int loc = str.length();
while (loc > 0) {
char c1 = str.charAt(--loc);
if (Character.isLowSurrogate(c1)) {
assert loc >= 0;
char c2 = str.charAt(--loc);
reversed.append(c2);
}
reversed.append(c1);
}
return reversed.toString();
如果您考虑使用StringBuffer
进行简单附加作弊,则可以将其替换为:
char[] reversed = new char[str.length()];
int next = 0;
...
reversed[next++] = c1; // instead of .append(c1)