I need to compress a string in my application but I am very limited in the operations I can perform. In particular, I cannot store data in any file and I cannot query any database. Also, I cannot call any library so I have to code my own data compression algorithm. What would be the simplest algorithm to achieve this goal? I could code the smaz algorithm myself but it does not seem to work very well with long strings.
If you need something reasonably effective but not very taxing to implement, I would recommend LZW.
LZW has several advantages, not the least of which is that it uses fixed-width codes (the width strictly increases as compression proceeds), rather than Huffman or arithmetic coding. It also does not require string searching through a sliding window, instead performing hash table or tree lookup per input character. This means that it requires significantly less code to implement than methods based on LZ77.
The simplest (besides "no compression at all") is RLE.
RLE is useless on many kinds of data, but better kinds of general-purpose compression require more complex algorithms.