суббота, 17 ноября 2018 г.

The Love-Letter Mystery




/*
Джеймс раздобыл любовное письмо, которое его друг Гарри написал своей девушке. Будучи шутником, Джеймс решил
изменить его. Он превратил все слова в палиндромы. В каждом слове он изменял буквы только на меньшие,
например, 'd' он мог превратить в 'c' и это считалось одной операцией. (Он мог изменять значение только до
буквы 'a', 'a' не может быть изменено в 'z') Найдите минимальное количество операций для превращения слова
в палиндром.

Формат ввода
============
Первая строка содержит целое число T - количество тестов.
Следующие T строк содержат по одному слову.

Формат вывода
=============
В каждой стоке содержится одно число, соответствующее минимальному количеству операций для данного теста.

Ограничения
===========
1 ≤ T ≤ 10
1 ≤ длина слова ≤ 104
Все символы - только строчные буквы английского алфавита от 'a' до 'z'

Пример. Ввод #00
================
3
abc
abcba
abcd

Пример. Вывод #00
=================
2
0
4

Пояснение
=========
Для первого теста, ab*c* -> ab*b* -> ab*a*.
Для второго теста, abcba - палиндром.
Для третьего теста, abc*d* -> abc*c* -> abc*b* -> abc*a* = ab*c*a -> ab*b*a.
*/



#include <iostream>
#include <cmath>
using namespace std;

// Complete the theLoveLetterMystery function below.
int theLoveLetterMystery(string str) {
    int count = 0;

    for (int x = 0, y = str.size() - 1; x < y; x++, y--)
    {
        count += abs(str[x] - str[y]);
    }
    return count;
}

int main() {
    string str = "abcba";

    int result = theLoveLetterMystery(str);

    cout << result << endl;

    return 0;
}

четверг, 15 ноября 2018 г.

Beautiful Binary String



/*
Problem
=======

Alice has a binary string. She thinks a binary string is beautiful if and only if it doesn't contain the substring "010".

In one step, Alice can change a 0 to a 1 or vice versa. Count and print the minimum number of steps needed to make Alice see the string as beautiful.

For example, if Alice's string is b=010 she can change any one element and have a beautiful string.

Function Description
====================

Complete the beautifulBinaryString function in the editor below. It should return an integer representing the minimum moves required.

beautifulBinaryString has the following parameter(s):

   - b: a string of binary digits

Input Format
============

The first line contains an integer n, the length of binary string.
The second line contains a single binary string b.

Output Format
=============

Print the minimum number of steps needed to make the string beautiful.

Sample Input 0
==============
0101010

Sample Output 0
===============
2

Try your solution at: https://www.hackerrank.com/challenges/beautiful-binary-string/problem
*/

#include <iostream>
#include <string>
using namespace std;

using namespace std;

// Complete the beautifulBinaryString function below.
int beautifulBinaryString(string str) {
    size_t found = str.find("010");
    int count = 0;

    while (found != string::npos)
    {
        count++;
        found = str.find("010", found + 3);
    }
    return count;

}

int main()
{
    string b = "0100101010";

    int result = beautifulBinaryString(b);
    cout << result << "\n";
    return 0;
}


The Love-Letter Mystery

/* Джеймс раздобыл любовное письмо, которое его друг Гарри написал своей девушке. Будучи шутником, Джеймс решил изменить его. Он ...