#include <iostream>
#include <cctype>
struct StringStats {
int length;
int upperCaseCount;
int lowerCaseCount;
int digitCount;
int spaceCount;
int nonAlphaNumericCount;
};
StringStats analyzeString(const std::string& str) {
StringStats stats = {0, 0, 0, 0, 0, 0}; // Initialize with zeros
for (char ch : str) {
stats.length++;
if (isupper(ch)) {
stats.upperCaseCount++;
} else if (islower(ch)) {
stats.lowerCaseCount++;
} else if (isdigit(ch)) {
stats.digitCount++;
} else if (isspace(ch)) {
stats.spaceCount++;
} else if (!isalnum(ch)) {
stats.nonAlphaNumericCount++;
}
}
return stats;
}
int main() {
std::string inputString;
std::cout << "Enter a string: ";
std::getline(std::cin, inputString); // Read an entire line
StringStats results = analyzeString(inputString);
std::cout << "String Characteristics:\n";
std::cout << "Length: " << results.length << std::endl;
std::cout << "Uppercase: " << results.upperCaseCount << std::endl;
std::cout << "Lowercase: " << results.lowerCaseCount << std::endl;
std::cout << "Digits: " << results.digitCount << std::endl;
std::cout << "Spaces: " << results.spaceCount << std::endl;
std::cout << "Non-alphanumeric: " << results.nonAlphaNumericCount << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2N0eXBlPgoKc3RydWN0IFN0cmluZ1N0YXRzIHsKICAgIGludCBsZW5ndGg7CiAgICBpbnQgdXBwZXJDYXNlQ291bnQ7CiAgICBpbnQgbG93ZXJDYXNlQ291bnQ7CiAgICBpbnQgZGlnaXRDb3VudDsKICAgIGludCBzcGFjZUNvdW50OwogICAgaW50IG5vbkFscGhhTnVtZXJpY0NvdW50Owp9OwoKU3RyaW5nU3RhdHMgYW5hbHl6ZVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7CiAgICBTdHJpbmdTdGF0cyBzdGF0cyA9IHswLCAwLCAwLCAwLCAwLCAwfTsgLy8gSW5pdGlhbGl6ZSB3aXRoIHplcm9zCgogICAgZm9yIChjaGFyIGNoIDogc3RyKSB7CiAgICAgICAgc3RhdHMubGVuZ3RoKys7CiAgICAgICAgaWYgKGlzdXBwZXIoY2gpKSB7CiAgICAgICAgICAgIHN0YXRzLnVwcGVyQ2FzZUNvdW50Kys7CiAgICAgICAgfSBlbHNlIGlmIChpc2xvd2VyKGNoKSkgewogICAgICAgICAgICBzdGF0cy5sb3dlckNhc2VDb3VudCsrOwogICAgICAgIH0gZWxzZSBpZiAoaXNkaWdpdChjaCkpIHsKICAgICAgICAgICAgc3RhdHMuZGlnaXRDb3VudCsrOwogICAgICAgIH0gZWxzZSBpZiAoaXNzcGFjZShjaCkpIHsKICAgICAgICAgICAgc3RhdHMuc3BhY2VDb3VudCsrOwogICAgICAgIH0gZWxzZSBpZiAoIWlzYWxudW0oY2gpKSB7CiAgICAgICAgICAgIHN0YXRzLm5vbkFscGhhTnVtZXJpY0NvdW50Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBzdGF0czsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnN0cmluZyBpbnB1dFN0cmluZzsKICAgIHN0ZDo6Y291dCA8PCAiRW50ZXIgYSBzdHJpbmc6ICI7CiAgICBzdGQ6OmdldGxpbmUoc3RkOjpjaW4sIGlucHV0U3RyaW5nKTsgIC8vIFJlYWQgYW4gZW50aXJlIGxpbmUKCiAgICBTdHJpbmdTdGF0cyByZXN1bHRzID0gYW5hbHl6ZVN0cmluZyhpbnB1dFN0cmluZyk7CgogICAgc3RkOjpjb3V0IDw8ICJTdHJpbmcgQ2hhcmFjdGVyaXN0aWNzOlxuIjsKICAgIHN0ZDo6Y291dCA8PCAiTGVuZ3RoOiAiIDw8IHJlc3VsdHMubGVuZ3RoIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiVXBwZXJjYXNlOiAiIDw8IHJlc3VsdHMudXBwZXJDYXNlQ291bnQgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJMb3dlcmNhc2U6ICIgPDwgcmVzdWx0cy5sb3dlckNhc2VDb3VudCA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIkRpZ2l0czogIiA8PCByZXN1bHRzLmRpZ2l0Q291bnQgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJTcGFjZXM6ICIgPDwgcmVzdWx0cy5zcGFjZUNvdW50IDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiTm9uLWFscGhhbnVtZXJpYzogIiA8PCByZXN1bHRzLm5vbkFscGhhTnVtZXJpY0NvdW50IDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==