UPWORD - Đếm từ viết hoa

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho xâu ký tự ~s~ chỉ gồm các chữ cái latin. Ta gọi một từ HOA trong xâu ~s~ là một dãy các ký tự in HOA (‘A’ đến ‘Z’) liên tiếp, hai từ HOA liên tiếp được ngăn cách nhau bởi ít nhất một ký tự latin in thường. Hãy đếm số lượng từ HOA xuất hiện trong xâu ~s~.

Input

  • Gồm một dòng duy nhất chứa xâu ~s~.

Giới hạn:

  • ~80\%~ số điểm có độ dài xâu ~s~ không quá ~1000~ ký tự;
  • ~20\%~ số điểm có độ dài xâu ~s~ không quá ~10^6~ ký tự.

Output

Một dòng duy nhất ghi số nguyên là số lượng từ HOA xuất hiện trong xâu ~s~.

Sample

Input #1
CongCHAnhunuithaison
Output #1
2

Hint

Xét #1, có hai từ HOA xuất hiện trong xâu CongCHAnhunuithaisonCCHA.

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 0
    HPNdeptra  đã bình luận lúc 4, Tháng 1, 2026, 15:56

    full AC:

    include <bits/stdc++.h>

    using namespace std; string s; int main() { cin>>s; int cnt=0; for (int i=0;i<s.size();i++) if (s[i]>='A'&&s[i]<='Z') if (i==0||(s[i-1]>='a'&&s[i-1]<='z')) cnt++; cout<<cnt; }


  • 0
    congtyluuthaibao1978  đã bình luận lúc 27, Tháng 11, 2025, 12:29

    include <bits/stdc++.h>

    using namespace std;

    int main() { string s; cin >> s;

    int count = 0;
    bool inUpper = false;
    
    for(char c : s) {
        if('A' <= c && c <= 'Z') {
            if(!inUpper) {
                // bắt đầu từ mới in hoa
                count++;
                inUpper = true;
            }
        } else {
            inUpper = false; // kết thúc từ in hoa
        }
    }
    
    cout << count << "\n";
    return 0;
    

    }


  • 0
    Dung5A2025  đã bình luận lúc 28, Tháng 6, 2025, 14:23

    cíu tui với bài này làm bằng scratch tui ko biết làm