524 A B Problem 字串處理

2021-07-05 01:08:26 字數 1498 閱讀 6467

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

a+b問題早已經被大家所熟知了,是不是很無聊呢?現在大家來做一下a-b吧。

現在有兩個實數a和b,聰明的你,能不能判斷出a-b的值是否等於0呢?

輸入

有多組測試資料。每組資料報括兩行,分別代表a和b。

它們的位數小於100,且每個數字前中可能包含+,- 號。

每個數字前面和後面都可能有多餘的0。

每組測試資料後有一空行。

輸出對於每組資料,輸出一行。

如果a-b=0,輸出yes,否則輸出no。

樣例輸入

1

11.0

2.0

樣例輸出

yes

no

判斷兩個數字是否相等,但是位數會非常大,需要自己用陣列來模擬,hdu 一道題,和這個很相似,但是這個比hdu 的那個複雜了很多,不但要考慮字尾 0 ,還要考慮前導零,以及前面的符號,甚至是 0 前面的符號!!

為了處理方便,個人使用了指標,因為有時候在處理字串的時候指標比較方便,演算法競賽雖然很少使用指標,但是如果自己有把握用好的情況下,還是比較簡單的,處理很多東西也會方便一些..........

個人思路有以下幾點:

1,先呼叫函式去掉字尾零,但是注意,只有小數點存在的時候,才能去掉字尾零,所以需要乙個查詢小數點的函式,如果小數點後面全是零,那麼順便把小數點也去掉,這裡說的去掉,是指賦值為 0 ,這樣不會影響之後的處理;

2,需要考慮前導零,,這裡使用兩個指標來指向有效區域,先判斷第一位有沒有符號,如果有,就從第二位開始考慮,尋找第乙個不是零的下標值,然後找到後,先別返回這個值,判斷符號位,如果符號位為 - 而且當前這個下標的值不為字元 0 (-0和+0的情況),那麼就把這個下標前移一位,這一位賦值上 - ,然後返回;

3,上一步的返回值,也就是兩個數字的有效位置(比如 0001 他的有效位置就是下標 3 ),用兩個指標指向,直接進行字串比較,這裡就體現到了使用指標的好處,可以按自己需要比較兩個字串的某一部分(目前個人只會比較後半部分,學的高深,完全可以自己定義一切規則),然後輸出相應指示結果....

如果實在不理解,自己一步一步除錯看程式的執行比較好.........

給出幾組測試資料:

+00 -00

+00001.00002 -000100.000000

100 1.00

1.0001 1.00010

2.000 200.000

#include#includechar *pa,*pb;

int search(char x)//查詢小數點函式

} return 0;

}void change(char x)//去字尾函式

if(x[len]=='.')//如果可以,把小數點也去掉

}}int change2(char x)//去掉前導零

while(i

LeetCode 524 字串中最長子序列

給定乙個字串和乙個字串字典,找到字典裡面最長的字串,該字串可以通過刪除給定字串的某些字元來得到。如果答案不止乙個,返回長度最長且字典順序最小的字串。如果答案不存在,則返回空字串。示例 1 輸入 s abpcplea d a b c 輸出 a 解題思路 首先應該迴圈給出的字元陣列來找到其中滿足條件的最...

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...

字串,字串陣列,字串指標!!

字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...