Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class Tasks {
- //Архиватор
- private static ArrayList<String> rleArch(String text) {
- int tmp = 1;//Счётчик повторений символа
- char c;//Повторяющийся символ
- ArrayList<String> result = new ArrayList<>();
- char textArray[] = text.toCharArray();
- for (int i = 0; i < textArray.length - 1; i++) {
- //Считаем количество повторений символа
- if (textArray[i] == textArray[i + 1]) {
- tmp++;
- } else {
- c = textArray[i];
- //Записываем символ в массив
- result.add(c + String.valueOf(tmp));
- //Сбрасываем счётчик
- tmp = 1;
- }
- }
- return result;
- }
- //Разархиватор
- private static StringBuilder rleRearch(ArrayList<String> archStr) {
- StringBuilder result = new StringBuilder();
- for (String str : archStr) {
- char c[] = str.toCharArray();//разибраем зашифрованный символ и кол-во его повторений на массив символов
- String tmpStr[] = new String[c.length - 1];
- StringBuilder tmpStr2 = new StringBuilder();
- //Если число повторений больше 9 и занимает больше одного слота в массиве переводим char в String и только потом в int
- if (c.length > 2) {
- for (int j = 1; j < c.length; j++) {
- tmpStr[j - 1] = String.valueOf(c[j]);
- tmpStr2.append(tmpStr[j - 1]);
- int tmp1 = Integer.parseInt(tmpStr2.toString());
- result.append(repeatString(c[0], tmp1));
- }
- //Иначе сразу переводим число в int
- } else{
- int tmp1 = Integer.parseInt(String.valueOf(c[1]));
- result.append(repeatString(c[0], tmp1));
- }
- }
- return result;
- }
- //Повторяет строку нужное количество раз.
- private static String repeatString(char s, int count) {
- StringBuilder r = new StringBuilder();
- for (int i = 0; i < count; i++) {
- r.append(s);
- }
- return r.toString();
- }
- public static void main(String[] args) {
- String text = "ТТТТТТТТТТТТТУУУУУУУТТТТТТТ ММММННННОООГГООО ПООООООВВВВВТТТТТОООРРООВВ.";
- System.out.println(rleArch(text));
- System.out.println(rleRearch(rleArch(text)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment