Codeforces 59A Word 單字 翻譯與解答

難易度 : 800

英文原文如下

Vasya is very upset that many people on the Net mix uppercase and lowercase letters in one word. That’s why he decided to invent an extension for his favorite browser that would change the letters’ register in every word so that it either only consisted of lowercase letters or, vice versa, only of uppercase ones. At that as little as possible letters should be changed in the word. For example, the word HoUse must be replaced with house, and the word ViP — with VIP. If a word contains an equal number of uppercase and lowercase letters, you should replace all the letters with lowercase ones. For example, maTRIx should be replaced by matrix. Your task is to use the given method on one given word.

中文翻譯

Vasya 對網路上很多人會混雜大寫跟小寫的字母在一個單字中感到很不滿意。這就是為什麼他決定要創造一個他最喜歡的瀏覽器的擴充套件,那可以改變每個單字的字母大小寫,讓單字變成全部小寫,反之全部大寫,同時希望可以異動最少的字母。舉例來說,單字 HoUse 需要被取代為 house,單字 ViP 則會變成 VIP。如果一個單字的大小寫字母數量相同,你應該將單字改為小寫。舉例來說,maTRIx應該被取代為 matrix。你的任務是對給予的單字使用給予的方法進行處理。

輸入

The first line contains a word s — it consists of uppercase and lowercase Latin letters and possesses the length from 1 to 100.

第一行包含了一個單字 s – 它由大寫及小寫拉丁字母組成,長度介於1到100之間。

輸出

Print the corrected word s. If the given word s has strictly more uppercase letters, make the word written in the uppercase register, otherwise – in the lowercase one.

印出正確的單字 s。要是給予的單字有更多的大寫字母,則另其顯示為大寫,反之則為小寫。

範例

輸入HoUse
輸出house
輸入ViP
輸出VIP
輸入maTRIx
輸出matrix

解題思路

整體思路來說還是挺容易的,就是要計算一個單字裡面大小寫的數量並比較。

要注意的是,只有大寫數量大於小寫數量才會要轉為大寫,這代表當大小寫數量一樣的話,是要轉為小寫的

C#解決方案

方案1

string word = Console.ReadLine();
int uCnt = 0;   //UpperCase letter count
int lCnt = 0;   //LowerCase letter count

foreach(var c in word){
    if(char.IsUpper(c)){
        uCnt+=1;
    }
    else {
        lCnt+=1;
    }
}

Console.WriteLine( uCnt>lCnt ? word.ToUpper() : word.ToLower());

簡單的利用一個foreach 並用 char.IsUpper 來判斷是大寫還是小寫,並加到計數器上。

最後針對計數器的數字進行比較並回傳結果。

Java解決方案

方案1

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String word = scanner.nextLine();
        int uCnt = 0;   //UpperCase letter count
        int lCnt = 0;   //LowerCase letter count
        
        for (char c : word.toCharArray()) {
            if (Character.isUpperCase(c)) {
                uCnt+=1;
            } else {
                lCnt+=1;
            }
        }
        
        System.out.print(uCnt>lCnt ? word.toUpperCase() : word.toLowerCase());
        
    }
}

結論

在這一題當中,重要的是可以學習到如何使用 char.IsUpper 等方法來判斷一個Char是大小寫。

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

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

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

題目連結 : Problem – 59A – Codeforces

一些其他的Codeforces文章

發佈留言

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