【发布时间】:2018-12-24 00:39:43
【问题描述】:
我最近编写了这个简短的方法来确定一个字符串是否是回文。我想知道我可以做些什么来提高它的效率,我肯定缺少可以加快计算速度的简单内置函数。
感谢大家的帮助!
boolean checkPalindrome(String inputString) {
ArrayList<Character> arrFront = new ArrayList<Character>();
ArrayList<Character> arrBack = new ArrayList<Character>();
for(int i=0; i<inputString.length()-1; i++) {
arrFront.add(inputString.charAt(i));
}
for(int i=inputString.length()-1; i>0; i--) {
arrBack.add(inputString.charAt(i));
}
StringBuilder builder1 = new StringBuilder(arrFront.size());
for (Character c : arrFront) {
builder1.append(c);
}
String front = builder1.toString();
StringBuilder builder2 = new StringBuilder(arrBack.size());
for (Character c : arrBack) {
builder2.append(c);
}
String back = builder2.toString();
return(front.equals(back));
}
【问题讨论】:
-
speed up是什么意思?时间复杂度,还是更少的代码? -
你的意思是像this?请注意,这是更少的代码,而是not very efficient
-
我投票结束这个问题,因为它属于 Code Review SE。
-
@AndreyTyukin 是的,如果您关心效率,简单的循环解决方案 (
for (int i = 0; i < n/2; ++i) { if (str.charAt(i) != str.charAt(n-i-1)) return false; }) 是更好的选择 -
@GBlodgett 使用
str.length()也会加快速度!早点回来会安全一段时间。
标签: java string optimization palindrome