Click here to Skip to main content
15,886,840 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Run-length encoding is a fast and simple method of encoding strings. The basic idea is to represent repeated successive characters as a single count and character. For example, the string "AAAABBBCCDAA" would be encoded as "4A3B2C1D2A".

Implement run-length encoding and decoding. You can assume the string to be encoded have no digits and consists solely of alphabetic characters. You can assume the string to be decoded is valid.

Can anyone help me with the coding of this question, preferably in python

**Thank you**
The below is the code that I have done in python

What I have tried:

Python
<
```python
s=input("Enter the string: ")
c=1
for i in range(len(s)-1):
    if s[i]==s[i+1]:
        c+=1
        d=str(c)
        print(d+s[i+1])
    else:
        c=1
        d=str(c)
        print(d+s[i+1])
```
Posted
Updated 29-May-21 22:25pm
v2
Comments
Richard MacCutchan 30-May-21 3:29am    
What is wrong with the code you have written?

Try this:
Python
c = 1                       # start the count at 1
next = s[0]                 # set the first string to the first letter
for i in range(1, len(s)):  # repeat for all the letters after the first
    if next == s[i]:        # if it's the same letter
        c += 1              # increase the count
    else:                   # if it is a different letter
        print(c, next, sep='', end='')   # print the current count and letter
        c=1                 # restart the count
        next = s[i]         # at this new letter

print(c, next, sep='')  # print the details of the final letter
 
Share this answer
 
v2
While we are more than willing to help those that are stuck, that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.

So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.

If you are having problems getting started at all, then this may help: How to Write Code to Solve a Problem, A Beginner's Guide[^]
 
Share this answer
 
Quote:
For example, the string "AAAABBBCCDAA" would be encoded as "4A3B2C1D2A".

In fact, the result should be "4A3B2CD2A" because printing the 1 is counter productive, but code is a little more complicated to handle the situation.

Obviously, you need to learn how to analyze a problem and craft an algorithm.
Take a sheet of paper and pencil and write down all the steps to solve the problem, and refine as necessary.
In this case draw a table, first column is for input string, 1 char per line, add 1 column per variable, and 1 column for output, add intermediate lines when necessary. And note every change in variables.
- Learn one or more analyze methods, E.W. Djikstra/N. Wirth Stepwize Refinement/top-Down method is a good start.
Structured Programming.pdf[^]
https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design[^]
https://en.wikipedia.org/wiki/Structured_programming[^]
https://en.wikipedia.org/wiki/Edsger_W._Dijkstra[^]
https://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF[^]
Program Development by Stepwise Refinement[^]
- Learn Algorithms and Data-Structures.
GitHub - The-Art-of-Computer-Programming-Books: "Everyday life is like programming, I guess. If you love something you can put beauty into it." ? Donald E. Knuth[^]
Skiena The Algorithm Design Manual
-----
When your code do not behave the way you expect, or you don't understand why !

There is an almost universal solution: Run your code on debugger step by step, inspect variables.
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't know what your code is supposed to do, it don't find bugs, it just help you to by showing you what is going on. When the code don't do what is expected, you are close to a bug.
To see what your code is doing: Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute.

Debugger - Wikipedia, the free encyclopedia[^]

Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[^]
Basic Debugging with Visual Studio 2010 - YouTube[^]

27.3. pdb — The Python Debugger — Python 3.6.1 documentation[^]
Debugging in Python | Python Conquers The Universe[^]
pdb – Interactive Debugger - Python Module of the Week[^]

The debugger is here to only show you what your code is doing and your task is to compare with what it should do.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900