OpenJudge-1.7.17:字符串判等

一、题目链接

http://noi.openjudge.cn/ch0107/17/

二、解题思路(Java)

三、解题思路(C++)

四、Java程序

import java.util.Scanner;

public class Main {
    /**
     * 判断两个字符串在忽略大小写且忽略空格后是否相等
     *
     * @param one String类型的对象,代表待比较的字符串
     * @param two String类型的对象,代表待比较的字符串
     * @return 逻辑值,true当且仅当one和two在忽略大小写且忽略空格后相等,否则false
     */
    public boolean isEqual(String one, String two) {
        one = one.replace(" ", ""); // 移除one中空格
        two = two.replace(" ", ""); // 移除two中空格
        // one和two在忽略大小写后相等,返回true,否则false
        return one.equalsIgnoreCase(two);
    }

    public static void main(String[] args) {
        Main test = new Main();
        Scanner input = new Scanner(System.in);
        String one = input.nextLine();
        String two = input.nextLine();
        System.out.print(test.isEqual(one, two) ? "YES" : "NO");
    }
}

五、C++程序

#include <iostream>
using namespace std;

int main()
{
    string one; // 待比较的字符串
    string two; // 待比较的字符串
    getline(cin, one);
    getline(cin, two);
    int i;
    int n = one.length();
    int m = two.length();
    char A[n]; // 存放one中的字符,不含空格
    char B[m]; // 存放two中的字符,不含空格
    int p = 0; // A的有效长度
    int q = 0; // B的有效长度
    /* 将one中的非空格字符推入A中,推入的同时将大写字母转为对应小写字母 */
    for (i = 0; i < n; i++)
    {
        if (one[i] != ' ') // 如果当前字符one[i]不是空格,则其为字母
        {
            if (isupper(one[i])) // 如果one[i]是大写字母
            {
                one[i] = tolower(one[i]); // 则将其转为对应的小写字母
            }
            A[p] = one[i]; // 将one[i]推入A中
            p++; // A的有效长度增加1
        }
    }
    /* 将two中的非空格字符推入B中,推入的同时将大写字母转为对应小写字母 */
    for (i = 0; i < m; i++)
    {
        if (two[i] != ' ') // 如果当前字符two[i]不是空格,则其为字母
        {
            if (isupper(two[i])) // 如果two[i]是大写字母
            {
                two[i] = tolower(two[i]); // 则将其转为对应的小写字母
            }
            B[q] = two[i]; // 将two[i]推入B中
            q++; // B的有效长度增加1
        }
    }
    if (p != q) // 如果A和B的有效长度不同
    {
        cout << "NO"; // 则说明one和two不相等
    }
    else // 否则,A和B的有效长度相同,也即p == q
    {
        /* 从第一个字符开始,到最后一个字符为止 */
        for (i = 0; i < p; i++)
        {
            if (A[i] != B[i]) // 如果当前两个字符不同
            {
                cout << "NO"; // 则说明one和two不相等
                return 0; // 直接退出程序
            }
        }
        cout << "YES"; // 以上没有退出程序,说明one和two不相等
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江苏科技大学_计算机学院_潘磊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值