您的位置:首页 > 其它

特殊回文数

2015-05-02 10:51 162 查看
各位大神好,小弟第一次写博客,若有纰漏之处,敬请指正,本人会虚心受教

问题如下:

题目的大意就是说,在5到6位十进制回文数中找,各位上的何为指定值的回文数

一开始,我想到递归判断一个数是否是回文数

核心代码:

str.substring(1)+str.charAt(0);

但是我马上想到递归如果进栈次数多了,即数据大了多了,就很费时间

所以我马上换成了栈,因为我想,将元素各位依次取出放进栈里,然后取出不就行了吗 至于求一个数的各位数之和,我想字符串操作每一个字符不就行了么

所以我这样求各位和:

num += Integer.parseInt(str.substring(i,i+1));

然后我很高兴,因为我总算是写完了,终于可以测试了

结果发现超时了,于是我又去查了一下API被我发现了StringBuffer里面有个reverse()方法可以反转字符串经过改良之后,运行时间确实减少了,可还是超过了1秒我就很郁闷了,然后就放下了题目出去转了一圈,等我再回来的时候想起了求各位数的和有一种方法

sum += num%10;

num /= 10;

最后我写出了下面的代码:



import java.util.Scanner;

public class Main {



public static boolean f2(Integer str ,Integer n){



Integer sum = 0;

while(str>0){



sum += str%10;

str /= 10;

}

if(sum==n)

return true;



return false;

}





public static void main(String[] args) {



int goal = Integer.parseInt(new Scanner(System.in).nextLine());

boolean bool = false;

boolean bool1 = false;

StringBuffer str =null;



String num = "";

for(Integer i = 10000;i<1000000;i++){



num = i.toString();

str = new StringBuffer(num);

bool1 = f2(i,goal);



if(bool1==true){//这里我先判断一个数各位和是否等于给定值



bool = str.reverse().toString().equals(num);

if(bool==true){

System.out.println(i);

}

}



}

System.exit(0);

}

}
看起来好像没有什么难懂的,但是写起来我还是花了一点时间的,希望大神支出不足,小弟继续努力向你们看齐!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: