特殊回文数
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);
}
}
看起来好像没有什么难懂的,但是写起来我还是花了一点时间的,希望大神支出不足,小弟继续努力向你们看齐!
问题如下:
题目的大意就是说,在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);
}
}
看起来好像没有什么难懂的,但是写起来我还是花了一点时间的,希望大神支出不足,小弟继续努力向你们看齐!
相关文章推荐
- 【蓝桥训练系统】--特殊回文数字(循环嵌套)
- 特殊回文数
- "蓝桥杯“基础练习:特殊回文数
- 基础练习 特殊回文数
- 基础练习 特殊回文数
- 特殊回文数
- 【蓝桥杯练习系统】基础练习 特殊回文数
- 特殊回文数
- BASIC 9-13 特殊回文数 十进制转十六进制 十六进制转十进制 十六进制转八进制 数列排序
- 4000 蓝桥杯-BASIC-8 特殊回文数
- 特殊回文数
- 蓝桥杯 基础练习 特殊回文数
- 蓝桥杯 BASIC-9 基础练习 特殊回文数
- Lq_特殊回文数
- "蓝桥杯“基础练习:特殊回文数
- 蓝桥杯 基础练习 特殊回文数
- 蓝桥杯练习系统-特殊回文数
- 蓝桥杯-基础练习-特殊回文数
- 基础练习 特殊回文数
- 蓝桥杯 基础练习之特殊的数字 、回文数、特殊回文数、十进制转十六进制 、十六进制转十进制