Codeforces 112A Petya 以及字串們 – 翻譯與解答

難易度 : 800

英文原文如下

Little Petya loves presents. His mum bought him two strings of the same size for his birthday. The strings consist of uppercase and lowercase Latin letters. Now Petya wants to compare those two strings lexicographically. The letters’ case does not matter, that is an uppercase letter is considered equivalent to the corresponding lowercase letter. Help Petya perform the comparison.

中文翻譯

小 Petya 非常喜歡禮物。他的媽媽為了她的生日買了兩個相同大小的字串。這兩個字串由大寫以及小寫的拉丁字母組成。Petya現在想要按照字典的順序來比較這兩個字串。字串的大小寫並不影響,也就是說,大寫字母被視為與小寫字母是一樣的。協助Petya進行比較吧~

輸入

Each of the first two lines contains a bought string. The strings’ lengths range from 1 to 100 inclusive. It is guaranteed that the strings are of the same length and also consist of uppercase and lowercase Latin letters.

前兩行中,每一行包含了一個購買的字串。字串的長度介於1到100之間,兩個字串的長度保證是一樣的,而且保證都是由大寫或小寫的英文字母所組成。

輸出

If the first string is less than the second one, print “-1”. If the second string is less than the first one, print “1”. If the strings are equal, print “0”. Note that the letters’ case is not taken into consideration when the strings are compared.

如果第一個字串比第二個小,就印出 “-1″,如果第二個數字比第一個小,印出”1″。如果兩個數字相等,印出 “0”。需要注意的是,在比較字母大小的時候不需要理會字母的大小寫。

範例

輸入aaaa
aaaA
輸出0
輸入abs
Abz
輸出-1
輸入abcdefg
AbCdEfF
輸出1

筆記

If you want more formal information about the lexicographical order (also known as the “dictionary order” or “alphabetical order”), you can visit the following site:

如果你想要有關字典序排序的更多正式資訊,你可以造訪以下網站:


解題思路

要比較兩個字串,其實有一些程式內建的作法

C#解決方案

方案1string.compare

string a = Console.ReadLine();
string b = Console.ReadLine();

int result = string.Compare(a, b, StringComparison.OrdinalIgnoreCase);

if (result > 0)
{
    Console.WriteLine(1);
}
else if (result == 0)
{
    Console.WriteLine(0);
}
else
{
    Console.WriteLine(-1);
}

我們可以使用內建的 string.compare 方法來比較兩個字串

以及使用參數 StringComparison.OrdinalIgnoreCase,就可以忽略字母大小寫的差異

當然,你/妳要是希望使用 .ToLower() 或是 .ToUpper() 之後再來進行比較也是一樣的。

Java解決方案

方案1 – compareToIgnoreCase

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
    
        String a = scanner.nextLine();
        String b = scanner.nextLine();

        int result = a.compareToIgnoreCase(b);

        if (result > 0) {
            System.out.println(1);
        } else if (result == 0) {
            System.out.println(0);
        } else {
            System.out.println(-1);
        }
    }
}

Python3解決方案

方案1

a = input()
b = input()

a = a.lower()
b = b.lower()

if(a<b):
    print(-1)
elif(a==b):
    print(0)
else:
    print(1)

Python中字串之間的比大小是很簡單的,可以直接使用 < 、 >、 == 來進行判斷

只是為了達成忽略大小寫,我們需要先將兩個字串統一才能進行後續的比較


結論

Codeforces的題目都會出現一些謎之說明呢

像是拿字串來當別人的禮物之類的…

參考來源

🧡如果這篇文章有幫上你的一點點忙,那是我的榮幸

🧡收藏文章或幫我點個廣告,那都是對我的支持

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

題目連結 : Problem – 112A – Codeforces

一些其他的文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *