东华OJ-基础题-104-A == B ?(C++)

  • 问题描述
    给你两个非负实数A和B,如果A等于B,输出 "YES", 否则输出"NO"
  • 输入说明
    第一行N,表示有N组测试数据。

以下N行,每行两个非负实数 A和B。每个实数不超过1000位,且可能在前面和后面有0存在。

  • 输出说明
    对于每组测试数据,如果A和B相等则输出 "YES", 否则输出 "NO"。

每组测试数据占一行,两组测试数据之间无空行。行首与行尾均无空格。

  • 输入范例
cpp 复制代码
2
100.0 00100
0100.1234576 00000000100.123457
  • 输出范例
cpp 复制代码
YES
NO

感想:substr()切割字符串,使用find_first_not_of() find_last_not_of()
代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

// 标准化实数字符串:消除前导0、后导0、多余小数点
string normalize(string s) {
    // 步骤1:处理小数点,拆分整数部分和小数部分
    auto dot_pos = s.find('.');
    string integer_part = s.substr(0, dot_pos);
    string decimal_part = (dot_pos != string::npos) ? s.substr(dot_pos + 1) : "";

    // 步骤2:移除整数部分的前导0(保留单个0,如"000"→"0")
    auto first_non_zero = integer_part.find_first_not_of('0');
    if (first_non_zero != string::npos) {
        integer_part = integer_part.substr(first_non_zero);
    } else {
        integer_part = "0"; // 整数部分全0,保留一个0
    }

    // 步骤3:移除小数部分的后导0
    if (!decimal_part.empty()) {
        auto last_non_zero = decimal_part.find_last_not_of('0');
        if (last_non_zero != string::npos) {
            decimal_part = decimal_part.substr(0, last_non_zero + 1);
        } else {
            decimal_part = ""; // 小数部分全0,清空
        }
    }

    // 步骤4:拼接结果(无小数部分则不加小数点)
    if (decimal_part.empty()) {
        return integer_part;
    } else {
        return integer_part + "." + decimal_part;
    }
}

int main() {
    int n;
    cin>>n;
    string arr[n][2];
    for(int i = 0; i<n; ++i) {
        cin>>arr[i][0]>>arr[i][1];
        if(normalize(arr[i][0]) == normalize(arr[i][1]))
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}
相关推荐
阿里嘎多学长41 分钟前
2026-04-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
j_xxx404_2 小时前
Linux:静态链接与动态链接深度解析
linux·运维·服务器·c++·人工智能
叶小鸡2 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
c++之路3 小时前
C++23概述
java·c++·c++23
时空系3 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
CHANG_THE_WORLD4 小时前
python 批量终止进程exe
开发语言·python
古城小栈4 小时前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
学涯乐码堂主5 小时前
有趣的“打擂台算法”
c++·算法·青少年编程·gesp
云栖梦泽5 小时前
Linux内核与驱动:14.SPI子系统
linux·运维·服务器·c++