java实例个数_JAVA实例(求回文数的个数)

4335ad4cd3fb1bc16edd3bbc6dc2948a.png

Problem description

所谓回文数是从左至右或从右至左读起来都是一样的数字,如:121是一个回文数。计算1至n间共有多少个回文数。

Input

有多个测试数据,每个测试数据占一行,输入一个正整数n(1≤n≤9999)。

Output

输出一个整数,表示回文数的个数。

Sample Input

900

1234

3456

8900

2367

Sample Output

98

111

133

187

122本来回文数问题是属于比较简单的,但是在和实验室师兄们讨论的时候发现他们的算法思想是:对照左右两边的数字是否对应也就是说在他们的算法设计中还要设计数字的奇偶问题,觉得甚为不便...不知道有没有人也是这样弄的...其实回文数的第一个想法就是利用栈的原理,通过将数字分解压入栈内,再出栈重组,若重组后的数字与原数相同,则该数必为回文数(不知道一位数算不算,在我的算法实现中将其考虑为回文数了)刚开始实现算法时本来想构造一个栈,不过觉得麻烦,要重新构造类等等,代码并不精简,而且可读性也会打折...由于是用java实现程序,所以利用了java中非常好用的string实现了这一功能。很想提高自己代码的质量,所以恳请各位大虾们给予宝贵意见,非常感谢:)

代码如下:

import java.util.Scannerimport java.util.Arrays

public class Main

{

public static void main(String args[])

{

int []SaveDigi=new

int[10000] Arrays.fill(SaveDigi,0)

for(int i=1i<10000i++) { String stack=""

int a = (int)i/10

int b = (int)i%10

while(a!=0)

{

stack+=b

b=(int)a%10

a=(int)a/10

}

stack+=b

if(stack.equals(new String().valueOf(i)))

SaveDigi[i]=++SaveDigi[0]

else

SaveDigi[i]=SaveDigi[i-1]

}

Scanner stdin=new Scanner(System.in)

while(stdin.hasNext())

System.out.println(SaveDigi[stdin.nextInt()])

}}

2829f2ca24f0d0090cbba57f30759f23.png

JAVA实例(求回文数的个数).doc

下载Word文档到电脑,方便收藏和打印[全文共874字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值