Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số lượng chữ cái thường khác nhau tối đa giữa hai chữ hoa trong C++


Nhiệm vụ: tìm số lượng chữ cái thường khác nhau tối đa xuất hiện giữa hai chữ hoa trong xâu cho trước.

Ví dụ 1

Đầu vào** –

str = "JKyubDoorG"

Đầu ra** – 3

Giải thích** – "yub" giữa K và D → 3 ký tự khác nhau. "oor" giữa D và G → 2 ký tự khác nhau (o lặp). Max = 3.

Ví dụ 2

Đầu vào** –

str = "ABcefsTaRpaep"

Đầu ra** – 4

Phương pháp

  • Bỏ qua chữ thường ở đầu xâu cho đến chữ hoa đầu tiên.
  • Duyệt xâu, gặp chữ hoa: đếm chữ thường khác nhau kể từ chữ hoa trước (dùng mảng cnt[26]), cập nhật ans, reset cnt.
  • Gặp chữ thường: tăng cnt[ch-'a'].

Ví dụ

#include <bits/stdc++.h>
using namespace std;

int Max(string s) {
    int size = s.length();
    for (int i = 0; i < size; i++) {
        if (s[i] >= 'A' && s[i] <= 'Z') {
            i++;
            break;
        }
    }
    int ans = 0;
    int cnt[26] = { 0 };
    for (int i = 0; i < size; i++) {
        if (s[i] >= 'A' && s[i] <= 'Z') {
            int CurrMax = 0;
            for (int i = 0; i < 26; i++)
                if (cnt[i] > 0)
                    CurrMax++;
            ans = max(ans, CurrMax);
            memset(cnt, 0, sizeof(cnt));
        }
        if (s[i] >= 'a' && s[i] <= 'z')
            cnt[s[i] - 'a']++;
    }
    return ans;
}

int main() {
    string str = "JKyubDoorG";
    cout << Max(str);
    return 0;
}

Đầu ra

3