最近打算練習寫代碼的能力,是以從簡單題開始做。
大部分還是用C語言來解決。
@
題目
判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。是以它不是一個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。是以它不是一個回文數。
思路
這與#7很相似,但是需要考慮方法的效率問題。
初步想法
初步的想法就是用一個while循環,在循環裡面解決取餘和倒序相加的工作。之後再用一個循環進行首尾比較。
具體代碼如下:
bool isPalindrome(int x) {
if (x < 0 || x%10 == 0 && x != 0) return 0;
if (x / 10 == 0) return 1;
int a[20] = { 0 }, n = 0;
while (x) {
a[n] = x % 10;
x = x / 10;
n++;
}
for (int i = 0; i < n / 2; i++){
if (a[i] != a[n-1-i]) return 0;
}
return 1;
}
需要注意的是,我們可以預先對資料進行判斷,比如負數一定不是回文數,數字末尾為0的非0數也一定不是回文數,隻有一位的數字一定是回文數。、
進一步想法
在看了官方題解後,提到了将數字本身反轉,然後将反轉後的數字與原始數字進行比較,如果它們是相同的,那麼這個數字就是回文。
bool isPalindrome(int x) {
if (x < 0 || x%10 == 0 && x != 0) return 0;
if (x / 10 == 0) return 1;
int rev = 0;
while (x > rev) {
rev = x % 10 + rev * 10;
x = x / 10;
}
return x == rev || x == rev / 10;
}
需要注意的是由于預先不知道x是奇數位還是偶數位,是以最後的比較條件裡出現了 x==rev/10.
最後想法
題目中也有提到将數字轉換為字元串,我一開始想到用itoa,但是leetcode不支援這個函數,是以選用了sprintf來進行轉換。
bool isPalindrome(int x) {
if (x < 0 || x % 10 == 0 && x != 0) return 0;
char a[20] = { 0 };
sprintf_s(a,"%d",x);
for (int i = 0; i< (strlen(a) / 2); i++){
if (a[i] != a[strlen(a) - 1 - i]) return 0;
}
return 1;
}
參考連結
總結
在簡單問題上,不僅要注意到問題的解決,還要注重方法的效率問題,嘗試用多種方法來解決。
leetcode 1.回文數-(easy)
2019.7.11leetcode刷題 難度 easy 題目名稱 回文數 題目摘要 判斷一個整數是否是回文數.回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數. 思路 一些一定不為回文數的 ...
LeetCode 5回文數
判斷一個整數是否是回文數.回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數. 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向 ...
leetcode isPalindrome (回文數判斷)
回文很簡單,就是正着讀和反着讀一樣,要判斷一個數是否為回文數隻需要判斷正反兩個是不是相等即可. 再往深了想一下,隻需要判斷從中間分開的兩個數一個正讀,一個反讀相等即可. 代碼: class Solut ...
Java實作 LeetCode 9 回文數
9. 回文數 判斷一個整數是否是回文數.回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數. 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false ...
[LeetCode] 9. 回文數
題目連結:https://leetcode-cn.com/problems/palindrome-number/ 題目描述: 判斷一個整數是否是回文數.回文數是指正序(從左向右)和倒序(從右向左)讀都 ...
leetcode記錄-回文數
判斷一個整數是否是回文數.回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數. 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向 ...
Leetcode 9 回文數Palindrome Number
判斷一個整數是否是回文數.回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數. 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向 ...
leetcode 9 Palindrome Number 回文數
Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...
[LeetCode] Prime Palindrome 質數回文數
Find the smallest prime palindrome greater than or equal to N. Recall that a number is prime if it's ...
随機推薦
2016 版 Laravel 系列入門教程(五)【最适合中國人的 Laravel 教程】
本教程示例代碼見: https://github.com/johnlui/Learn-Laravel-5 在任何地方卡住,最快的辦法就是去看示例代碼. 本文是本系列教程的完結篇,我們将一起給 Arti ...
Mac下finder中無法關閉的小條
就是這個惡心的小東西,根本無法關閉.其實就是在finder中無意中輸入了中文導緻的(不是按Alt+F , 就是打開finder然後輸入中文) 可以通過繼續輸入中文然後按esc退出.也可以用下面的設定盡 ...
javascript面向對象執行個體
非私有屬性 function Student(name, gender, age, grade, teacher){ this.name = name; this.gender = gender; t ...
erl0004 - ets 安全周遊
safe_fixtable(Tab, true|false) -> true Types: Tab = tid() | atom() 鎖定set,bag和 ...
HDU 5656 CA Loves GCD (數論DP)
CA Loves GCD 題目連結: http://acm.hust.edu.cn/vjudge/contest/123316#problem/B Description CA is a fine c ...
給Sublime Text 2安裝CTags插件
以Windows作業系統為例介紹安裝過程: 安裝ctags應用程式. 到CTags的官方網站下載下傳最新版本,解壓後将ctags.exe檔案放到系統的搜尋路徑中. 安裝Sublime Text 2的Pac ...
MAC apache伺服器搭建
一.啟動原本伺服器 首先打開“終端(terminal)”,輸入 sudo apachectl -v,(可能需要輸入機器秘密).如下顯示Apache的版本: 可以輸入啟動指令進行啟動: sudo apa ...
滑動視窗的最大值 &#183; sliding-window-maximum
[抄題]: Given an array nums, there is a sliding window of size k which is moving from the very left of ...
android4.2 高用zing拍照後,傳回其它頁面操作時,主線程關掉或程式退出的問題解決
産生錯誤的代碼: @Override protected void onCreate(Bundle savedInstanceState) { StrictMode.setThreadPolicy(n ...
Linux Socket - UDP連結包
LINUX UDP SOCKET 01 UDP号綁定會報錯嗎? 會的,提示Address is using,本地的沒有差別 UDP不需要發起連結,不知道是不是連接配接成功 client的IP位址和端口号不 ...