zoukankan      html  css  js  c++  java
  • 字符串入门练习题3 字符串比较 题解

    题目出处:http://codeforces.com/problemset/problem/112/A

    题目描述

    给你两个字符串 a 和 b ,你需要比较它们在忽略大小写的情况下的字典序大小。
    忽略大小写的意思是:"abc" 和 "Abc" 在忽略大小写的情况下的字典序是相等的。
    在忽略大小写的情况下:

    • 如果字符串 a 的字典序比字符串 b 要小,输出 -1;
    • 如果字符串 a 的字典序和字符串 b 相等,输出 0;
    • 如果字符串 a 的字典序比字符串 b 要打,输出 1。

    输入格式

    输入包含两行,第一行对应字符串 a ,第二行对应字符串 b。两个字符串的长度相等,且在 1 到 100 之间。

    输出格式

    按照题目描述中所说的,输出两个字符串在忽略大小写的情况下的字典序比较结果(-1、0 或者 1)。

    样例输入1

    aaaa
    aaaA
    

    样例输出1

    0
    

    样例输入2

    abs
    Abz
    

    样例输出2

    -1
    

    样例输入3

    abcdefg
    AbCdEfF
    

    样例输出3

    1
    

    题目分析

    首先,因为这道题目是忽略大小写的,所以我们可以在正式处理前将两个字符串中的大写字符全部转换为小写字符。
    然后对一个 char 变量可以使用 tolower() 函数对齐进行转换。
    然后,如果我们是用 char 数组进行操作的,那么我们可以使用 strcmp 函数来比较两个字符串的字典序;
    如果我们是用 string 进行操作的,那么我们可以直接使用 比较符号来比较两个字符串的大小,或者使用 string 的compare成员函数来进行比较。

    使用 char 数组实现的代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    
    char a[110], b[110];
    
    int main() {
        cin >> a >> b;
        int n = strlen(a);
        for (int i = 0; i < n; i ++) a[i] = tolower(a[i]);
        for (int i = 0; i < n; i ++) b[i] = tolower(b[i]);
        cout << strcmp(a, b) << endl;
        return 0;
    }
    

    使用 string 实现的代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    
    string a, b;
    
    int main() {
        cin >> a >> b;
        int n = a.length();
        for (int i = 0; i < n; i ++) a[i] = tolower(a[i]);
        for (int i = 0; i < n; i ++) b[i] = tolower(b[i]);
        cout << a.compare(b) << endl;
        return 0;
    }
    
  • 相关阅读:
    Notes about "Exploring Expect"
    Reuse Sonar Checkstyle Violation Report for Custom Data Analysis
    Eclipse带参数调试的方法
    MIT Scheme Development on Ubuntu
    Manage Historical Snapshots in Sonarqube
    U盘自动弹出脚本
    hg的常用配置
    Java程序员的推荐阅读书籍
    使用shared memory 计算矩阵乘法 (其实并没有加速多少)
    CUDA 笔记
  • 原文地址:https://www.cnblogs.com/zifeiynoip/p/11450567.html
Copyright © 2011-2022 走看看