北京企業(yè)網(wǎng)站開發(fā)多少錢網(wǎng)絡(luò)營(yíng)銷環(huán)境宏觀微觀分析
?本題中的一個(gè)難點(diǎn)是怎么判斷是否相等,如果自己寫判斷的話是不是很麻煩,判斷整數(shù)之后再去判斷小數(shù)部分,那么我們這題的另一個(gè)難點(diǎn)就要登場(chǎng)了,第一個(gè)難點(diǎn)讓本題的情況變得復(fù)雜,第二個(gè)難點(diǎn)讓本題變得很難想到怎么判斷,這時(shí)就要用到我們的數(shù)據(jù)量了,他是說小數(shù)點(diǎn)最少為四位數(shù),那么兩個(gè)數(shù)的最大公倍數(shù)就是12,也就是最多小數(shù)位12位之后那么肯定為一個(gè)周期了,超過12位的肯定是在重復(fù)了,沒必要,那么可以將原有的字符串中的括號(hào)內(nèi)的擴(kuò)充到12位,再用庫(kù)里的函數(shù)轉(zhuǎn)成浮點(diǎn)數(shù)進(jìn)行判斷就可以做出這題了,這題最大難點(diǎn)就是解決判斷小數(shù)部分,第一個(gè)難點(diǎn)比較容易解決,轉(zhuǎn)成浮點(diǎn)數(shù)判斷就行,這樣就變成一個(gè)簡(jiǎn)單題了
class Solution {
public:bool isRationalEqual(string s, string t) {auto decimal = [&](string x)->double{int l = x.find('('), r = x.find(')');if (l != -1 && r != -1){string left = x.substr(0, l);string mid = x.substr(l + 1, r - l - 1);string right = x.substr(r + 1);string str = left + mid + mid + mid + mid + mid + mid + mid + mid + mid + mid + mid+ mid+mid+mid+right;return atof(str.c_str());}else return atof(x.c_str());};return fabs(decimal(s) - decimal(t)) < 1e-8;}
};