Advertisement
Guest User

Byte

a guest
Jan 24th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. vector<char> Compress(vector<char> a, int size) {
  2. int pointer = 0, counter = 0;
  3. vector<char> temp;
  4. while (pointer < size - 1) {
  5. if (a[pointer] != a[pointer + 1]) {
  6. while (pointer + counter < size - 1 && a[pointer + counter] != a[pointer + counter + 1]) {
  7. counter++;
  8. if (counter == 128)
  9. break;
  10. }
  11. temp.push_back(counter);
  12. if (pointer + counter < size - 1) {
  13. for (int i = 0; i < counter; i++) {
  14. temp.push_back(a[pointer + i]);
  15. }
  16. }
  17. else {
  18. for (int i = 0; i < counter + 1; i++) {
  19. temp.push_back(a[pointer + i]);
  20. }
  21. counter++;
  22. }
  23. pointer += counter;
  24. counter = 0;
  25. }
  26. else {
  27. while (pointer + counter < size - 1 && a[pointer + counter] == a[pointer + counter + 1]) {
  28. counter++;
  29. if (counter == 127)
  30. break;
  31. }
  32. if (pointer + counter >= size - 1) {
  33. counter++;
  34. }
  35. temp.push_back(-counter);
  36. temp.push_back(a[pointer]);
  37. pointer += counter;
  38. counter = 0;
  39. }
  40. }
  41. return temp;
  42. }
  43.  
  44. vector<char> Decompress(vector<char> a, int size) {
  45. int pointer = 0, counter = 0;
  46. vector<char> temp;
  47. while (pointer < size - 1) {
  48. counter = a[pointer];
  49. if (counter < 0) {
  50. counter = -counter;
  51. for (int i = 0; i < counter; i++) {
  52. temp.push_back(a[pointer + 1]);
  53. }
  54. pointer += 2;
  55. }
  56. else {
  57. for (int i = 0; i < counter; i++) {
  58. temp.push_back(a[pointer + i + 1]);
  59. }
  60. pointer += counter;
  61. pointer++;
  62. }
  63. }
  64. temp.push_back(a[pointer]);
  65. return temp;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement