Leetcode 972. 相等的有理数
本文最后更新于336 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com

1.题目基本信息

1.1.题目描述

给定两个字符串 s 和 t ,每个字符串代表一个非负有理数,只有当它们表示相同的数字时才返回 true 。字符串中可以使用括号来表示有理数的重复部分。

有理数 最多可以用三个部分来表示:整数部分 、小数非重复部分 和小数重复部分 <(><)>。数字可以用以下三种方法之一来表示:

    • 例: 0 ,12 和 123
  • <.>

    • 例: 0.5 , 1. , 2.12 和 123.0001
  • <.><(><)>

    • 例: 0.1(6) , 1.(9), 123.00(1212)

十进制展开的重复部分通常在一对圆括号内表示。例如:

  • 1 / 6 = 0.16666666... = 0.1(6) = 0.1666(6) = 0.166(66)

1.2.题目地址

https://leetcode.cn/problems/equal-rational-numbers/description/

2.解题方法

2.1.解题思路

分数类。对于0.(12)这样的数,等于(12/100+12/10000+12/1000000+...),可以发现是12乘以一个等比数列的和,记r=10*(-k),x=12,则求极限可知原数等于xr/(1-r)(其中k为括号中的数的长度)。然后根据Fraction分数类构建分数,比较大小即可

3.解题代码

python代码

from fractions import Fraction

class Solution:
    def isRationalEqual(self, s: str, t: str) -> bool:
        # 思路:分数类。对于0.(12)这样的数,等于(12/100+12/10000+12/1000000+...),可以发现是12乘以一个等比数列的和,记r=10**(-k),x=12,则求极限可知原数等于x*r/(1-r)(其中k为括号中的数的长度)。然后根据Fraction分数类构建分数,比较大小即可
        def getFraction(s1:str):
            n = len(s1)
            ans = 0
            if "." not in s1:
                ans += int(s1)
                return ans
            else:
                i1 = s1.index(".")
                ans += int(s1[:i1])
                if "(" not in s1:
                    if n - i1 - 1 > 0:
                        ans += Fraction(int(s1[i1 + 1:]), 10 ** (n - i1 - 1))
                    return ans
                else:
                    i2 = s1.index("(")
                    len1 = i2 - i1 - 1
                    len2 = n - i2 - 2
                    if len1 > 0:
                        ans += Fraction(int(s1[i1 + 1:i2]), 10 ** len1)
                    ans += Fraction(int(s1[i2 + 1:n - 1]), 10 ** len1 * (10 ** len2 - 1))
                    return ans
        # print(getFraction(s))
        # print(getFraction(t))
        return getFraction(s) == getFraction(t)

4.执行结果

觉得有帮助可以投喂下博主哦~感谢!

作者:geek007

转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇