字串反轉

2021-09-24 22:29:15 字數 1418 閱讀 8596

p1553 數字反轉(公升級版)

題目描述

給定乙個數,請將該數各個位上數字反轉得到乙個新數。

這次與noip2011普及組第一題不同的是:這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調;小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分;分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子與分母;百分數的分子一定是整數,百分數只改變量字部分。整數新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零;小數新數的末尾不為0(除非小數部分除了0沒有別的數,那麼只保留1個0);分數不約分,分子和分母都不是小數(約分滴童鞋抱歉了,不能過哦。輸入資料保證分母不為0),本次沒有負數。

輸入輸出格式

輸入格式:

乙個數s

輸出格式:

乙個數,即s的反轉數

輸入輸出樣例

輸入樣例#1

5087462

輸出樣例#1:

2647805

輸入樣例#2:

600.084

輸出樣例#2:

6.48

輸入樣例#3:

700/27

輸出樣例#3:

7/72

輸入樣例#4:

8670%

輸出樣例#4:

768%

說明

所有資料:25%s是整數,不大於20位

25%s是小數,整數部分和小數部分均不大於10位

25%s是分數,分子和分母均不大於10位

25%s是百分數,分子不大於19位

第一種方法:

#includeusing namespace std;

char a[21];

void reverse(int l,int r)

flag=false;

cout《第二種

#includeusing namespace std;

char a[100];

int k,t,i,j;

int main()

else

if(j==wlen)

}//}

} if(flag==false)cout<<"-1";

else cout

}

字串反轉

據說一道微軟的面試題,要求考慮時間和空間的優化,下面給出幾種通常字串反轉的方法 1 直接陣列操作 char strreverse char str return str 這種做法原來的str沒有儲存,原來的str也改變了 2 指標操作 char strreverse char str return ...

字串反轉

include include include 方法一 將第乙個字元和最後乙個互換,第二個和倒數第二個互換,如此依次迴圈下去 char strrev1 const char str return tmp free tmp 方法二 不額外申請一片儲存字串的記憶體空間,通過中間變數來改變傳遞進來的字串裡...

字串反轉

解法一 第一次看到這題目,想到最簡單 最直覺的解法就是 遍歷字串,將第乙個字元和最後乙個交換,第二個和倒數第二個交換,依次迴圈,即可,於是有了第乙個解法 const char str return tmp 這裡是通過陣列的下標方式訪問字串的字元,實際上用指標直接操作即可。解法二正是基於此,實現 為 ...