#include <string>
#include <iostream>
#include <cstddef>
int * count_char( const std:: string & s)
{
// consider 128 ASCII decimal and their coresponding character codes
int * charASCIIArray = new int [ 128 ] { 0 } ;
for ( const auto & it: s)
{
if ( ( 'A' <= it && it <= 'Z' ) || // if char between (A,B,....,Z) or
( 'a' <= it && it <= 'z' ) ) // between (a,b,....,z)
charASCIIArray[ static_cast < int > ( it) ] ++ ; // we count each corresponding array then
}
return charASCIIArray;
}
int main( )
{
std:: string userinput = "random words WITH *- aLl" ;
int * charASCIIArray = count_char( userinput) ;
for ( std:: size_t index = 0 ; index < 128 ; ++ index)
if ( charASCIIArray[ index] ! = 0 )
std:: cout << "Letter " << static_cast < char > ( index) // convert back to char
<< " occured " << charASCIIArray[ index] << " times.\n " ;
delete [ ] charASCIIArray;
return 0 ;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGRlZj4KCmludCogY291bnRfY2hhcihjb25zdCBzdGQ6OnN0cmluZyYgcykKewogICAgLy8gY29uc2lkZXIgMTI4IEFTQ0lJIGRlY2ltYWwgYW5kIHRoZWlyIGNvcmVzcG9uZGluZyBjaGFyYWN0ZXIgY29kZXMKICAgIGludCAqY2hhckFTQ0lJQXJyYXkgPSBuZXcgaW50WzEyOF17MH07CiAgICBmb3IoY29uc3QgYXV0byYgaXQ6IHMpCiAgICB7CiAgICAgICAgaWYoKCdBJyA8PSBpdCAmJiBpdCA8PSAnWicpIHx8ICAgICAvLyBpZiBjaGFyIGJldHdlZW4gKEEsQiwuLi4uLFopIG9yCiAgICAgICAgICAgKCdhJyA8PSBpdCAmJiBpdCA8PSAneicpICkgICAgICAvLyAgICAgICAgIGJldHdlZW4gKGEsYiwuLi4uLHopCiAgICAgICAgICAgY2hhckFTQ0lJQXJyYXlbc3RhdGljX2Nhc3Q8aW50PihpdCldKys7IC8vIHdlIGNvdW50IGVhY2ggY29ycmVzcG9uZGluZyBhcnJheSB0aGVuCiAgICB9CiAgICByZXR1cm4gY2hhckFTQ0lJQXJyYXk7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjpzdHJpbmcgdXNlcmlucHV0ID0gInJhbmRvbSB3b3JkcyBXSVRIICotIGFMbCI7CgogICAgaW50ICpjaGFyQVNDSUlBcnJheSA9IGNvdW50X2NoYXIodXNlcmlucHV0KTsKICAgIGZvcihzdGQ6OnNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgMTI4OyArK2luZGV4KQogICAgICAgIGlmKGNoYXJBU0NJSUFycmF5W2luZGV4XSAhPSAwKQogICAgICAgIHN0ZDo6Y291dCA8PCAiTGV0dGVyICIgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oaW5kZXgpICAvLyBjb252ZXJ0IGJhY2sgdG8gY2hhcgogICAgICAgICAgICAgICAgICA8PCAiIG9jY3VyZWQgIiA8PCBjaGFyQVNDSUlBcnJheVtpbmRleF0gPDwgIiB0aW1lcy5cbiI7CgogICAgZGVsZXRlW10gY2hhckFTQ0lJQXJyYXk7CiAgICByZXR1cm4gMDsKfQo=