java - 回文检查 Java 中 Int 的效率
问题描述
我已经构建了两种检查数字回文的方法。哪个效率更高?我所说的效率是指执行时间和内存分配。
首先,我将整数转换为字符串并检查它是否是回文。代码示例如下。
public class Palindrome{
/*
Function palindromeCheck
Return type boolean
Parameters characterArray
Checks character array for palindrome
*/
public static boolean palindromeCheck(char[] palinCheck){
boolean palindrome = true;
int firstLen = 0;
int secondLen = palinCheck.length - 1;
while(palindrome == true && firstLen < secondLen ){
if(palinCheck[firstLen] != palinCheck[secondLen]){
palindrome = false;
}
else{
firstLen++;
secondLen--;
}
} //end of while
return palindrome;
}
/*Main Function
Calls palinDromeCheck function
Prints results
*/
public static void main(String[] args){
int palinCheck = 1221;
String dipendra = Integer.toString(palinCheck);
char[] dipendraChar = dipendra.toCharArray();
System.out.println(palindromeCheck(dipendraChar));
}
}
第二种方法是不将其转换为字符串。
public class PalindromeNumber{
/*
Function: PalindromeCheck
parameters integer
ReturnType: boolean
Takes integer, checks if it is palindrome and returns accordingly
*/
public static boolean palindromeCheck(int number){
int firstNumber = number;
int secondNumber = 0;
while(number >= 1){
secondNumber = secondNumber* 10 + (number%10);
number = number/10;
}
return (firstNumber==secondNumber) ? true:false;
}
public static void main(String[] args){
System.out.println(palindromeCheck(111));
}
}
解决方案
我敢打赌第二种算法会更快,而且显然更节省空间。如果您假设n是输入数字的位数,则在第一个算法中:
Integer.toString
需要n 个步骤才能将其转换为String
.palindromeCheck
需要n / 2 次比较来检查它是否是回文。
但是,第二种算法需要n 个步骤来计算倒数(仅涉及整数运算)并且只需要 1 个比较来检查。
推荐阅读
- mysql - MySQL 中的 WHERE IN 子句有限制吗?
- firebase - 每次我尝试调用云函数时,它都会通过异常代码“NOT_FOUND”
- ios - 旋转应该在底部固定点的弧内的图像视图
- html - 在 div 内使用类 list-inline 垂直居中无序列表
- centos8 - 如何从配方构建centos 8奇异容器
- javascript - Chrome 上的 Javascript 跨域异常,但 Firefox 上没有
- pdf - Markdown 文件导航在 PDF 单独页面中不起作用
- arrays - 有没有办法在 Rivescript 中输入变量作为数组名称?
- javascript - 如何在在线 Excel 打字稿编辑器中使用或创建 Hmac SHA256
- nginx - 为什么 Nginx proxy_pass 在与变量一起使用时会忽略 add_headers?