added new features

This commit is contained in:
agusmakmun
2016-06-11 03:16:04 +07:00
parent 2b3a8775d9
commit c93580f192
14 changed files with 146 additions and 65 deletions

68
_posts/2016-06-11-mdam.md Normal file
View File

@@ -0,0 +1,68 @@
---
layout: post
title: "Find Substrings for line Encoding [CF]"
date: 2016-06-11 03:04:23 +0700
categories: [python, codefights]
---
Given a string, return its encoding defined as follows:
First, the string is divided into the least possible number of disjoint **substrings** consisting of identical characters
for example, `"aabbbc"` is divided into `["aa", "bbb", "c"]`
Next, each substring with length greater than one is replaced with a concatenation of its length and the repeating character
for example, substring `"bbb"` is replaced by `"3b"`
Finally, all the new strings are concatenated together in the same order and a new string is returned.
####SUBSTRING
A **substring** of a string `S` is another string `S'` that occurs in `S`. For example, `"Fights"` is a substring of `"CodeFights"`, but `"CoFi"` isn't.
**Example**
For `s = "aabbbc"`, the output should be `lineEncoding(s) = "2a3bc"`.
**Input/Output**
* [time limit] 4000ms (py)
* [input] string s (String consisting of lowercase English letters.)
_Constraints:_ `4 ≤ s.length ≤ 15.`
* [output] string
Encoded version of s.
**Solution:**
```python
import re
def lineEncoding(s):
grub = [ m.group(0) for m in re.finditer(r"(\w)\1*", s )]
numb = 0
out = []
for i in grub:
numb += 1
if len(i) > 1:
out.append(grub[numb-1].replace(grub[numb-1], str(len(i))+i[0]))
else:
out.append(i)
return ''.join(out)
```
**Result Tests:**
```python
>>>
s = "aabbbc"
>>> lineEncoding(s)
"2a3bc"
>>>
>>> s = "abbcabb"
>>> lineEncoding(s)
"a2bca2b"
>>>
>>> s = "abcd"
>>> lineEncoding(s)
"abcd"
>>>
```