leetcode上的问题是:给定一个整数x,如果x是回文整数,则返回true。
当一个整数向后读取和向前读取相同的内容时,它就是一个回文。例如,121是回文,而123不是。
这是我的代码。
class Solution {
public boolean isPalindrome(int x) {
if (x <= 9) {
//negative numbers are not palindromes
if (x < 0) {
return false;
}
}
else {
return true;
}
//if anything is divisible by 10 with no remainders its not a palindrome
if (x % 10 ==0) {
return false;
}
//creating reverse method
int reverse = 0;
while(x > reverse) {
int num = x % 10;
x /= 10;
reverse = (reverse * 10) + num;
}
if (x == reverse || x == reverse / 10) {
return true;
}
else {
return false;
}
}
}
我很确定我的逻辑是正确的,但我在NetBeans上测试时没有发现错误,得到的结果是121是正确的,但10是正确的,因为它不是回文,所以应该是错误的?我很困惑,希望能得到一些帮助,更好地理解逻辑。
问题在于第一次检查——对于任何大于9的数字,都会返回true。
这个:
if (x <= 9) {
//negative numbers are not palindromes
if (x < 0) {
return false;
}
}
else {
return true;
}
应该是这样的:
if (x <= 9) {
//negative numbers are not palindromes
if (x < 0) {
return false;
}
else {
return true;
}
}
即使这样也太冗长了。编写相同逻辑的更简单方法是
if (x <= 9) {
//negative numbers are not palindromes, but positive single digit numbers are
return x >= 0;
}
你可以通过以下方式实现同样的目标:
ArrayList
import java.util.ArrayList;
public class Main {
public static boolean palindrome(int number)
{
if (number < 0)
number *= -1; // Or return false if you want to exclude negative numbers
// 1. Decompose the number into digits
ArrayList<Integer> digits = new ArrayList<Integer>();
while (number > 0) {
digits.add(number % 10);
number /= 10;
}
// 2. Check
for (int i = 0, j = digits.size()-1; i < j; i++, j--) {
if (digits.get(i) != digits.get(j))
return false;
}
return true;
}
public static void main(String[] args)
{
System.out.println(palindrome(121));
System.out.println(palindrome(123));
System.out.println(palindrome(10));
}
}
输出:
true
false
false
我正在尝试解决数组旋转的程序。我在代码中遇到分段错误。有人能告诉我这个代码中的问题在哪里吗? 这就是问题所在 给定一个大小为N的未排序数组arr[],将其旋转D元素(顺时针)。 输入的第一行包含T表示测试用例的数量。每个测试用例的第一行包含两个空格分隔的元素,N表示数组的大小,整数D表示旋转的数字大小。随后的行将是N个空格分隔的数组元素。 我已经用下面的代码解决了它。
我的石头、布、剪刀游戏出错了: 代码:
我想用一个2D数组找到方差和标准差,我做了程序,但输出是不正确的。请帮助我,我应该做什么/修改它,以获得请求输出。 输入 3 4 1 0 1 1 1 1 1 1 1 1 1 解决方案输出 0.07513148009038192 0.27410122234383033 预期产出 0.0764 0.2764 我的程序:
问题内容: 我正在阅读 Java平台性能 (很遗憾,自从我最初提出这个问题以来,链接似乎已经从互联网上消失了),而A.3.3节使我感到担忧。 我一直在假设一个超出范围的变量将不再被视为GC的根,但是本文似乎与此矛盾。 最近的JVM(尤其是Sun的1.6.0_07版本)是否仍然有此限制?如果是这样,那么我有很多代码需要分析… 我问这个问题是因为该论文来自1999年-有时情况会发生变化,尤其是在GC领
问题内容: 我读这个和这个,结果发现,在课堂上我需要保存到类的引用,当东西在发生类,我们执行由类的接口中定义的方法工具。好吧,我明白了。我以不同的方式使用接口来调用回调: 我发现这种方式更具可读性,更容易理解,但是不确定这是否是不好的做法。因此,我可以随意走这条路吗? 问题答案: 所以我可以随意走这条路吗? 这种方式不是很正确。 您在说的是称为Observer或/ 模式。 简而言之:订户想要从发布
我读了这篇文章和这篇文章,发现在类中,我需要保存对类的引用,当类中发生一些事情时,我们执行一个由类实现的接口定义的方法。不知何故我明白了。我以不同的方式使用接口来调用回调: 我发现这种方式更易读,更容易理解,但不确定这是否是一个不好的做法。所以我可以自由地走得更远吗?