日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

回文数、罗马数转整数、整数反转

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回文数、罗马数转整数、整数反转 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一、整數(shù)的回文數(shù)判斷
    • 1、負(fù)數(shù)和一位數(shù)的判斷
    • 2、將整數(shù)存進(jìn)vector容器
    • 3、下標(biāo)mid和next的定位(關(guān)鍵)
    • 4、循環(huán)比較并得出結(jié)果
  • 二、羅馬數(shù)字轉(zhuǎn)整數(shù)
    • 1、簡(jiǎn)介羅馬數(shù)字
    • 2、利用for嵌套switch case語(yǔ)句實(shí)現(xiàn)轉(zhuǎn)換:
  • 三、整數(shù)反轉(zhuǎn)
    • 1、接值,并檢查是否為負(fù)數(shù)
    • 2、檢查位數(shù)(將count乘到與x的一致位數(shù))
    • 3、利用count進(jìn)行位數(shù)轉(zhuǎn)換
    • 4、處理兩種特殊情況
  • 總結(jié)


前言

<來(lái)自力扣的三道簡(jiǎn)單算法題解法分享>

題目一:判斷一個(gè)整數(shù)是否是回文數(shù);
題目二:把輸入的羅馬數(shù)字轉(zhuǎn)換成整數(shù);
題目三:把輸入的整數(shù)反轉(zhuǎn)后輸出。


下面案例僅供參考

一、整數(shù)的回文數(shù)判斷

輸入一個(gè)整數(shù),判斷是否為回文數(shù),是則返回true,否則返回false。 例:輸入【-121】,返回false;輸入【12321】,返回true。

1、負(fù)數(shù)和一位數(shù)的判斷

if (x < 0)return false; //小于0的都不是回文數(shù)if (x >= 0 && x <= 9)return true; //0~9是回文數(shù)

2、將整數(shù)存進(jìn)vector容器

vector<int>a;int n = 0;while (x != 0) { //整除法存進(jìn)容器a (頭插)a.insert(a.begin(), x % 10);x /= 10;n++;}

3、下標(biāo)mid和next的定位(關(guān)鍵)

int mid = n / 2 - 1; /*定位mid*/int Next = 0;if (n % 2 == 0)Next = mid + 1; /*定位偶數(shù)的next*/elseNext = mid + 2; /*定位奇數(shù)的next*/

4、循環(huán)比較并得出結(jié)果

int i = 0, j = 0;for (i = mid, j = Next; i >= 0 && j <= a.size(); i--, j++) {if (a[i] == a[j])continue;else return false;}return true;

二、羅馬數(shù)字轉(zhuǎn)整數(shù)

1、簡(jiǎn)介羅馬數(shù)字

羅馬數(shù)字包含以下七種字符: I, V, X, L,C,D 和 M。 I (1)、V(5)、X(10)、L (50)、C(100)、D (500)、M(1000) 例如, 羅馬數(shù)字 2 寫做 II ,即為兩個(gè)并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。 通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數(shù)字 1 在數(shù)字 5 的左邊,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 。同樣地,數(shù)字 9 表示為 IX。

這個(gè)特殊的規(guī)則只適用于以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊,來(lái)表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來(lái)表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左邊,來(lái)表示 400 和 900。

2、利用for嵌套switch case語(yǔ)句實(shí)現(xiàn)轉(zhuǎn)換:

for (int i = 0; i < s.size(); i++) {switch (s[i]) {case 'I': {if (s[i + 1] == 'V') { ans += 4; i++; break; }if (s[i + 1] == 'X') { ans += 9; i++; break; }ans += 1;}break;case 'V':ans += 5; break;case 'X': {if (s[i + 1] == 'L') { ans += 40; i++; break; }if (s[i + 1] == 'C') { ans += 90; i++; break; }ans += 10;}break;case 'L':ans += 50; break;case 'C': {if (s[i + 1] == 'D') { ans += 400; i++; break; }if (s[i + 1] == 'M') { ans += 900; i++; break; }ans += 100;}break;case 'D':ans += 500; break;case 'M':ans += 1000; break;}}

三、整數(shù)反轉(zhuǎn)

輸入一個(gè)int類型范圍的整數(shù),輸出反轉(zhuǎn)后的整數(shù)
例:
輸入【-123】輸出【-321】
輸入【857】 輸出【758】

1、接值,并檢查是否為負(fù)數(shù)

特殊情況:
當(dāng)輸入值為-2147483648時(shí),直接用x=-x會(huì)超出int類型的范圍
(int類型取值范圍:-2147483648 至 2147483647)

long long y;int tap = 0;if (x < 0) { /*檢查是否為負(fù)數(shù)*//*是則將其變?yōu)檎龜?shù)并標(biāo)記*/y = x; /*考慮到當(dāng)x取-2147483648時(shí),不能用x=-x*/y = -y;tap = 1;}else y = x;

2、檢查位數(shù)(將count乘到與x的一致位數(shù))

int temp = y;long long count = 1;while (temp != 0) { /*整除法檢查x的位數(shù)*/temp /= 10;count *= 10; /*count乘到比x位數(shù)多一位*/}count /= 10; /*count減少一位,與x位數(shù)一致*/

3、利用count進(jìn)行位數(shù)轉(zhuǎn)換

long long ans = 0;while (y != 0) { //利用count進(jìn)行位數(shù)轉(zhuǎn)換ans += ((y % 10) * count);y /= 10;count /= 10;}

4、處理兩種特殊情況

if (ans < -2147483648 || ans>2147483647)return 0; /*如果超出int的范圍則返回0*/if (tap == 1) ans = -ans;/*如果標(biāo)記為1則將結(jié)果置為負(fù)數(shù)*/

總結(jié)

提示:這里對(duì)文章進(jìn)行總結(jié):
以上就是今天分享的三個(gè)內(nèi)容,會(huì)有更優(yōu)的解法,繼續(xù)加油!

總結(jié)

以上是生活随笔為你收集整理的回文数、罗马数转整数、整数反转的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。