একটা স্ট্রিং এর মধ্যে কোন charechter কয়টা অাছে তা কিভাবে count করব?

asked 05 Sep '15, 08:07

Undefined%20Mehedi's gravatar image

Undefined Mehedi
459

assignment নাকি ?

(05 Sep '15, 14:52) Tamanna Nishat Rini ♦♦

evabe to onek gulo variable(26+26+10=62) declare korte hobe and program ta onek boro hobe, onno kono way te solve kora jabe na?

(05 Sep '15, 20:11) Undefined Mehedi

আপনার অপর question টা মনে হয় delete করে দেওয়া ভালো। আমি উত্তরটা ওখানেই দিয়েছিলাম, পরে এই question টা দেখলাম। যাহোক, আসলে ৬২ টি variable নেওয়া কি খুব বড় কিছু? ৬২ * ৪ বাইট = ২৪৮ বাইট মাত্র! এবং time complexityও মাত্র n. এর চেয়ে কম আর কি চান ঠিক বুঝতে পারলাম না। আপনি বোধহয় ভেবেছেন ৬২টি variable ১টি ১টি করে declare করতে হবে, right? মানে array এর সাথে used to না। দুঃখিত, যদি ভুল বলে থাকি।

(06 Sep '15, 12:13) manetsus
1

kintu ete to code ta onek boro hobe, ami aro short chassilam, ASCII value diye jodi kisu kora jeto........

(06 Sep '15, 17:48) Undefined Mehedi

ASCII value দিয়েও করা যাবে, সে সেক্ষেত্রে memory safetyর জন্য ২০০ নিতে পারেন। সেক্ষেত্রে আমার code এ সব if কেটে দিয়ে letter[ s[i] ]++; দিয়ে দিবেন। আমি ভাবলাম আপনি ৬২ সাইজ নিতেই অনেক বড় বলতেছেন, may be memory efficient কিছু দরকার, তাই এভাবে দিয়েছি। @undefined-mehedi

(06 Sep '15, 18:20) manetsus

প্রতিটা letter/digit এর জন্য একেকেটা counter variable থাকবে (যার প্রতিটি initially 0). string traverse করে প্রতিটা count এক এক করে বাড়াবো, শেষে পেয়ে যাবো, কোনটা কয়বার আছে। নিচে code টী দিলাম, এখানেও দেখতে পারেন।

#include<iostream>
using namespace std;

int letter[62];

int main() {
    string s;
    getline(cin,s);

    for(int i = 0; i<s.size(); i++)
    {
        if(isdigit(s[i])) letter[ s[i] -'0' ]++;
        else if(isupper(s[i])) letter[ s[i] - 'A' + 10 ]++;
        else if(islower(s[i])) letter[ s[i] - 'a' + 36 ]++;
    }

    for(char i = '0'; i<='9'; i++)
        if(letter[i-'0'])cout<<i<<" -> "<<letter[i-'0']<<endl;

    for(char i = 'A'; i<='Z'; i++)
        if(letter[i-'A' + 10])cout<<i<<" -> "<<letter[i-'A' + 10]<<endl;

    for(char i = 'a'; i<='z'; i++)
        if(letter[i-'a'+ 36])cout<<i<<" -> "<<letter[i-'a'+ 36]<<endl;

    return 0;
}
permanent link

answered 06 Sep '15, 12:08

manetsus's gravatar image

manetsus
2.2k211

edited 06 Sep '15, 18:13

1

ans peyesi, thanks vaia...

(06 Sep '15, 18:00) Undefined Mehedi
1

kintu vaia arekta problem holo ekhane to space pele input neoa bondho kore disse, ami jodi ekta sentence input nite chai tahole ki korbo?

(06 Sep '15, 18:04) Undefined Mehedi
1

আমি update করে দিয়েছি, এখন পুরা line input নিবে। ধন্যবাদ। :) @undefined-mehedi

(06 Sep '15, 18:15) manetsus

upper case, lower case, digit and other প্রত্যেকের জন্য variable declare করুন্‌।। তারপর string এর প্রত্যেকটা character কে if else condition এর মাধ্যমে টেস্ট করে condition true হলে তার value 1 করে বারিয়ে দিন

permanent link

answered 05 Sep '15, 16:15

Anisur%20Rahman%20Tonu's gravatar image

Anisur Rahman Tonu
20716

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×56

question asked: 05 Sep '15, 08:07

question was seen: 1,070 times

last updated: 06 Sep '15, 18:22