LeetCode——倒序輸出

来源:互联网 发布:网络黑彩代理判刑 编辑:程序博客网 时间:2024/06/01 23:46

前言

坑爹啊,一道LeetCode的簡單級別的題目引出這麼多知識點,感覺自己好像什麼都不會,心疼自己一秒鐘。好的現在我們來講一下接下來的倒序輸出。

  • 1.首先讓計算機顯示提示語句。
  • 2.然後我們按照提示輸入一串數字(這個版本先弄數字吧,太多反而讓自己的腦袋轉不過來)。
  • 3 . 最後當然是把數字倒過來輸出啦。

原理

為了讓這個倒序輸出更加淺顯易懂,我選擇用圖來說話。首先,我們要先讓用戶輸入一串數字,這裡先暫停一下,我要提一個東西:分治算法。先來一波百度吧:

分治算法

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解

分治算法例子

看不懂嗎?我舉一個例子吧,四六級很痛苦吧,因為我們要背很多很多的單詞,但是這麼多的單詞一下子不能背完吧,然後那些單詞書,單詞APP就把那五六千的單詞分成一組一組的周計劃或者ABC…單詞組給我們背,這裡面就是分治算法啦,當一件事情大到不能一下解決,我們可以把它分成一件件的小事件去解決。

回歸正傳

哈哈哈,還是不懂,我們就從我們現在這個問題出發,我們原來設定的問題中是輸入一串數字吧,“123456789123456789123456789”和“123”這兩個都是滿足“一串數字”這句話的,但是為了舉例方便,我們會選擇是相對比較小的數字串進行舉例說明。我們這裡就選“123”這樣一串數字進行說明,當然你也可以用“12”啦。

圖例說明

这里写图片描述

步驟說明

  • 1.首先我們先讓用戶輸入一串數字放在藍色盒子裡面,同時我們也向計算機申請一個綠色的盒子(當然不是用來放月餅的啦,中秋節還留在宿舍寫博客,大概是心裡有詩和遠方吧)。
  • 2.第二步就是把藍色盒子的最後一個位置的數字“3”放到綠色盒子的第一個位置里。
  • 3.第三步就是把藍色盒子的倒數第二個數字“2”放到綠色盒子的第二個位置。
  • 4.以此類推。但是我們要注意到的是,每當藍色盒子的尾數“3”取出來之後,“2”原來是在十位的,結果變成個位,比之前的數字縮小了十倍;當綠色盒子右側增加一個尾數“2”之後,“3”原本是個位的,結果變成了十位,比之前的數字增加了十倍。

代碼實現

/* * This program about output in bit-reversed order * @version 1.01 2017-10-01 * @author huangzihan */package reverse.output;import java.util.Scanner;public class Test {       public static void main(String[] args)       {              System.out.println("請輸入一串數字:"); //提示用戶輸入一串數字;              Scanner in=new Scanner(System.in);              int num=in.nextInt();//輸入操作;              int sum=0;//哈哈哈,這就是綠色的盒子;              int rem;//餘數;              do              {                  sum=sum*10;                  //為啥子要乘以10?就像之前所說的綠色盒子尾數每增加一位就相當於擴大十倍;                  //也就是說把綠色盒子的最後一個位置騰出來;                  rem=num%10;//這一步就相當於把紅色盒子的尾數取出來;                  num=num/10;//這一步相當於把除尾數的數重新放到紅色盒子里;                  sum=sum+rem;//這一步就是把取出來的餘數放到綠色盒子最後一位;              }              while(num>0);              System.out.println("它倒序輸出是:");              System.out.println(sum);       }}
原创粉丝点击