English 中文(简体)
如果一封信重复写,即行文
原标题:Dropping a letter if it repeats

如果一封信重复的话,是否有办法删除该信?

例如,我要说,我有“条码”,我希望删除“条码”的开头之一。

最佳回答
问题回答

http://docs.python.org/library/difflib.html 标准图书馆:

import difflib

words = open( /usr/share/dict/words ).read().split()

difflib.get_close_matches( aaaappplllee , words, 3, 0.5)
[ appalled ,  apple ,  appellate ]

difflib.get_close_matches( aaardvarrk , words, 3, 0.5)
[ aardvark ,  aardvarks , "aardvark s"]

Here is a solution that will allow you to iterate over all versions of the string with different combinations of repeated letters:

from itertools import product, groupby

# groups == [ aaaa ,  ppp ,  lll ,  ee ]
groups = [  .join(g) for c, g in groupby( aaaappplllee )]

# lengths is an iterator that will return all combinations of string lengths to  
# use for each group, starting with [4, 3, 3, 2] and ending with [1, 1, 1, 1]
lengths = product(*[range(x, 0, -1) for x in map(len, groups)])

# Using the lengths from the previous line, this is a generator that yields all
# combinations of the original string with duplicate letters removed
words = (  .join(groups[i][:v] for i, v in enumerate(x)) for x in lengths)

>>> for word in words:
...   print word
... 
aaaappplllee
aaaapppllle
aaaapppllee
aaaappplle
aaaappplee
aaaappple
...
apple
aplllee
apllle
apllee
aplle
aplee
aple

这不是找到正确措辞的最有效办法,但它符合OP的原始方法。





相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签