Софтуерно Инженерство
Loading...
+ Нов въпрос
msmilkoff avatar msmilkoff 344 Точки

[Exam Problems] Java Fundamentals Retake - Problem{2} - Weird Script

Някой може ли да обясни как се намира буквата, която отговаря на съответното число? Авторското решение ми е малко неясно.

Ето тази част от условието:

1-26 are lowercase a-z, 27-52 are uppercase A-Z, 53-78 are a-z again, 79-104 are A-Z, and so on …

Тагове:
1
Technology Fundamentals
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки
Best Answer

Това означава, че ако получиш числото 3, трябва да изведеш буквата 'c'. Ако получиш 29, трябва да изведеш буквата 'C'. Ако получиш 55, трябва пак да изведеш малко 'c'.

Първото нещо, което трябва да направиш според мен е да оптимизираш полученото число, така че винаги да се свежда до 1-26 или 27-52.

Ако разделиш с остатък 55 на 52 (всичките възможости на големи и малки букви са 2x26 = 52), то ще получиш отново 3. Така мап-ваш по естествен начин 55 към 3 и в двата случая получаваш 3.

От тук нататък трябва да намериш как от 3 да върнеш 'c'. Единият вариант е if(num == 1) {return 'a';} if(num == 2) { return 'b'; } if(num == 3) { return 'c'; } (и така до 52). Другият вариант е да се заиграеш с ASCII таблицата, т.е. към 3 да добавиш char-a 'a' минус 1.

Делението с остатък на 52 естествено може да те обърка в случаите в които числото е кратно на 52 без остатък, тогава трябва да си наясно, че това е символ от поредицата с големите букви, а не с малките.

2