Codechef Probem : NITIKA

Problem : Link: ( https://www.codechef.com/JULY17/problems/NITIKA )

Nitika was once reading a history book and wanted to analyze it. So she asked her brother to create a list of names of the various famous personalities in the book. Her brother gave Nitika the list. Nitika was furious when she saw the list. The names of the people were not properly formatted. She doesn't like this and would like to properly format it.
A name can have at most three parts: first name, middle name and last name. It will have at least one part. The last name is always present. The rules of formatting a name are very simple:
  • Only the first letter of each part of the name should be capital.
  • All the parts of the name except the last part should be represented by only two characters. The first character should be the first letter of the part and should be capitalized. The second character should be ".".
Let us look at some examples of formatting according to these rules:

  • gandhi -> Gandhi
  • mahatma gandhI -> M. Gandhi
  • Mohndas KaramChand ganDhi -> M. K. Gandhi.

Input :

The first line of the input contains an integer T denoting the number of test cases.
The only line of each test case contains the space separated parts of the name.

Output :

For each case, output the properly formatted name.

Constraint :

  • 1 ≤ T ≤ 100
  • 2 ≤ Length of each part of the name ≤ 10
  • Each part of the name contains the letters from lower and upper case English alphabets (i.e. from 'a' to 'z', or 'A' to 'Z')

Subtask :

Subtask #1 (40 points)
  • There is exactly one part in the name.
Subtask #2 (60 points)
Original constraints

Example :

Input:
3
gandhi
mahatma gandhI
Mohndas KaramChand gandhi

Output:
Gandhi 
M. Gandhi 
M. K. Gandhi 
 
 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Solution (in C++) :


#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
    int t;
    cin >> t;
    cin.ignore();
    while (t--) {
        string s;

        getline(cin, s);

        int x = 0;
        for (int i = 0; i < s.length(); i++) {

            if (s[i] == ' ') {

                s[x] = toupper(s[x]);
                x++;
                s[x] = '.';
                x++;

                while (s[x] != ' ') {
                    s.erase(x, 1);
                }
                i = x;

                x++;
            }
        }

        s[x] = toupper(s[x]);
        x++;

        for (int k = x; k < s.length(); k++) {
            s[k] = tolower(s[k]);
        }

        cout << s << endl;
    }
    return 0;
}

Comments

Popular posts from this blog

CodeChef : Breaking Bricks || Problem Code: BRKBKS

HackerRank Problem : Reverse and capitalise first alphabet of each word.

CodeChef (AUG17 LunchTime) : Mathison and pangrams - MATPAN