1. 程式人生 > >java之簡單的迴文演算法

java之簡單的迴文演算法

轉載自:http://blog.csdn.net/ylyg050518/article/details/48263375

迴文數判定是學習程式設計和初等演算法設計的時候,經常會遇到的題目,對於迴文數的判定演算法包含了演算法過程設計的基礎性思考,今天又碰到這個問題,恰好正在深入學習Java,所以用Java做了演算法的重寫,特此記錄。

概念

設n是一任意自然數。若將n的各位數字反向排列所得自然數n1與n相等,則稱n為一回文數。例如,若n=1234321,則稱n為一回文數;但若n=1234567,則n不是迴文數。

題目要求

輸出1-10000內迴文數。

思路分析

根據迴文數的定義,可以知道迴文數的幾個特徵

1.迴文數正著讀,倒著讀一樣,也就是說它本身與它自身的反轉序列保持一致。

2.迴文數具備對稱性,既可以是偶數型對稱,也可以是奇數型對稱。

由此我們可以得出判定迴文數的兩種方式。

一種是取得原數的反轉數字,與原數字對比;另外一種則是通過比較對稱位置的數字是否均相同來判定是否是迴文數。

程式碼

  1. publicclass CircleNumber {  
  2.     /** 
  3.      * 列印10000以內的迴文數 
  4.      */
  5.     publicstaticvoid main(String[] args) {  
  6.         int count = 0;  
  7.         for (
    int i = 1; i <= 10000; i++)  
  8.             if (isCircleNumber3(i)) {  
  9.                 count++;  
  10.                 System.out.println("第" + count + "個迴文數:" + i);  
  11.             }  
  12.     }  
  13.     // 將字串轉置,然後呼叫equals方法比較
  14.     publicstaticboolean isCircleNumber1(int num) {  
  15.         String num_str = String.valueOf(num);  
  16.         StringBuffer sb = new StringBuffer(num_str).reverse();  
  17.         return num_str.equals(sb.toString());  
  18.     }  
  19.     // 計算原數字的反轉數字,與原數字對比
  20.     publicstaticboolean isCircleNumber2(int num) {  
  21.         int temp = 0;  
  22.         int oldValue = num;  
  23.         while (num > 0) {  
  24.             temp = temp * 10 + num % 10;  
  25.             num /= 10;  
  26.         }  
  27.         return oldValue == temp;  
  28.     }  
  29.     // 根據對稱特徵來進行迴文數判定的寫法
  30.     publicstaticboolean isCircleNumber3(int num) {  
  31.         // 獲取字串表示便於取值
  32.         String temp = String.valueOf(num);  
  33.         // 獲取數字長度
  34.         int len = temp.length();  
  35.         // 定義兩個遊標
  36.         int i = 0, j = len - 1;  
  37.         while (i <= len / 2 && j >= len / 2) {  
  38.             if (temp.charAt(i) == temp.charAt(j)) {  
  39.                 i++;  
  40.                 j--;  
  41.             } else
  42.                 returnfalse;  
  43.         }  
  44.         returntrue;  
  45.     }  
  46. }  

執行結果

第1個迴文數:1
第2個迴文數:2
第3個迴文數:3
第4個迴文數:4
第5個迴文數:5
第6個迴文數:6
第7個迴文數:7
第8個迴文數:8
第9個迴文數:9
......

......

......

第194個迴文數:9559
第195個迴文數:9669
第196個迴文數:9779
第197個迴文數:9889
第198個迴文數:9999

相關推薦

java簡單演算法

轉載自:http://blog.csdn.net/ylyg050518/article/details/48263375 迴文數判定是學習程式設計和初等演算法設計的時候,經常會遇到的題目,對於迴文數的判定演算法包含了演算法過程設計的基礎性思考,今天又碰到這個問題,恰好正

C++ Leetcode初級演算法驗證字串

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: “A man, a plan, a canal: Panama” 輸出: true 示例 2: 輸入: “race a car”

java-最長串-中心擴充套件演算法

import java.util.*; public class nk { public static void main(String[] args){ Scanner sc = new S

JavaIO(五)件系統

系統 選擇 shutdown img lap roo files -1 parent   轉載請註明源出處:http://www.cnblogs.com/lighten/p/6992043.html 1.前言   在講解Java的文件流之前,先來認識一下Java的文件系統的

java--簡單RSA算法加密解密

bytes 信任 文件中 實現 public args 路徑 int 指定 //加密協議 public class rsa_asc { /** 指定加密算法為DESede */ private static String ALGORITHM = "RSA";

LeetCode驗證

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race a car"

演算法

function cleanStr(str){ // 過濾掉字串中的所有空格、下劃線 var result = str.replace(/\s+/g,'').replace(/\_+/g,'').match(/\w/g).join(''); // 過濾掉所有的標點符號, \w是匹配一個單字字

java實現簡單word件生成

package testModel; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; impor

JAVA實現 簡單搶紅包演算法,模擬真實搶紅包。

import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; p

初學JAVA簡單模擬拳皇

1.設定雙方角色的攻擊力為5-15 模擬攻擊力時則需要用到 隨機數取值:Math.random( ) //初始取值範圍為[0,1) 要將它的值確定到 5-15 則可用如下公式:(int)(Math.random( )* X)%(b-a+1)+a // b>a  而X可以

JS演算法

palindrome(迴文)是指一個字串忽略標點符號、大小寫和空格,正著讀和反著讀一模一樣。 如果給定的字串是迴文,返回true,反之,返回false。 注意:首先需要刪除字串多餘的標點符號和空格,然後把字串轉化成小寫來驗證此字串是不是迴文。 1、先將字串全部轉換為小寫

Java展示檔案目錄結構

通過遞迴函式,展示某個檔案下目錄結構public class DirectorList { private static Scanner sc; public static void main(String[] args) { String route = getR

Java實驗(3) 素數

迴文素數指某一個數既是迴文數、又是素數,例如2, 3, 5, 7, 11, 101, 131,… 程式設計找出前100個迴文素數,並且要求按照每行10個的格式輸出。輸出方式任選。 1、本題主要變數

Java:計算數,輸入一個五位正整數,使用陣列判斷它是不是

package com.jredu.ch05; import java.util.Scanner; public class Work2 { public static void main(String[] args) { // TODO Auto-genera

我的ACM路——串的判斷

問題 D: 迴文串判斷時間限制: 1 Sec  記憶體限制: 128 MB提交: 2865  解決: 1046[提交][狀態][討論版]題目描述一個字串,如果從左向右看和從右向左看是一樣的,則稱為迴文串

JAVA實現判斷

從控制檯輸入一個數,如果是迴文數輸出是,不是迴文數輸出否。 package a1; import java.util.Scanner; public class HuiWenShuClass { public static void main

javaScript演算法挑戰

如果給定的字串是迴文,返回true,反之,返回false。palindrome(迴文)是指一個字串忽略標點符號、大小寫和空格,正著讀和反著讀一模一樣。注意:您需要刪除字串多餘的標點符號和空格,然後把字串轉化成小寫來驗證此字串是不是迴文。function palindrome(

1999年分割槽聯賽普級組二 

若一個數(首位不為零)從左向右讀與從右向左讀都一樣,我們就將其稱之為迴文數。  例如:給定一個10進位制數56,將56加56(即把56從右向左讀),得到121是一個迴文數。  又如:對於10進位制數87:  STEP1:87+78 = 165 STEP2:165+561 = 726  STEP3:726+6

LeetCodePalindrome Number(簡單 模擬)

問題描述: 確定整數是否是迴文。當它向前讀取向後時,整數是迴文。 例1: 輸入: 121 輸出: true 例2: 輸入: -121 輸出: false 說明:從左到右,它讀取-121。從右到左,它變成121-。因此它不是迴文。 例3: 輸入: 10 輸出:

最長子串--演算法思想探討和實現(python java)

最長迴文子串–演算法思想探討和實現(python java) 迴文串定義: 如果一個字串正著讀和反著讀是一樣的,那它就是迴文串。 下面是一些迴文串的例項: 12321 a aba abba aaaa tattarrattat 問題定義 最長迴