JAVA实例(求回文数的个数)
来源:优易学  2011-9-22 10:44:50   【优易学:中国教育考试门户网】   资料下载   IT书店
  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()])
  }}

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训