200 / 205
LeetCode · HardQiyin30 ball· ~40 daqiqa

Valid number

s satri berilgan. Undagi yozuv matematikkada yaroqli bo'lgan raqamli qiymat ekanligini aniqlang. Unda kasr, ishora (+, -) hamda eksponensial yozuvlar (e, E) qatnashishi mumkin, lekin ularning sintaksisi qat'iy qoidalarga mos kelishi kerak.

example.go
func solve(s string) bool {
    // ...
}

Misollar

kod
Input: s = "0"
Output: true
kod
Input: s = "e"
Output: false
kod
Input: s = "-90E3"
Output: true

Maslahatlar

  1. Regex yozishga urinmang — buning o'rniga bitta ko'rsatkich bilan satrni qismlarga (ixtiyoriy ishora, butun qism raqamlari, ixtiyoriy nuqta va kasr qismi, ixtiyoriy 'e'/'E' va daraja qismi) ketma-ket "iste'mol qilib" o'ting, har bir qismda nechta raqam uchraganini sanang.
  2. Ko'rsatkichni: ixtiyoriy '+'/'-' dan o'tkazing, keyin nuqtagacha bo'lgan raqamlarni sanang, so'ng ixtiyoriy '.' dan keyin yana raqamlarni sanang — agar ikkala raqam sonlari ham nolga teng bo'lsa darhol false qaytaring (mantissa yo'q). Keyin ixtiyoriy 'e'/'E' va undan keyingi ixtiyoriy ishora hamda kamida bitta raqamdan iborat daraja qismini tekshiring (agar 'e' bor-u lekin daraja raqamlari nol bo'lsa false). Oxirida ko'rsatkich butun satrni to'liq bosib o'tganini (i == n) tekshiring.