2012-07-12 8 views

答えて

6

質問のMicrosoft/Amazonの面接のタイプ: これは擬似コードであり、実際のコードは練習問題として残されています。よりハイレベルとして

for each char in the string do: 
    if the current char is equal to the next char: 
     delete next char 
    else 
    continue 

return string 

は、(ない実際に実装)してみてください:

for s in string: 
    if s == s+1: ## check until the end of the string 
    delete s+1 
+3

良いの呼び出しがあります。 –

5

ヒント:itertoolsモジュールは、超便利です。特に、一つの機能は、itertools.groupbyは、ここでは本当に便利になるかもしれません:

をitertools.groupby(反復可能[キー])

のiterableからの連続したキーとグループを返すイテレータを作成します。キーは、各 要素のキー値を計算する関数です。指定されていない場合、またはNoneの場合、keyはデフォルトでID というIDになり、要素は変更されません。一般に、反復可能な は、同じキー機能で既にソートされている必要があります。

文字列が反復可能であるため、だから、何を行う可能性はある:GROUPBYため

use groupby to collect neighbouring elements 
extract the keys from the iterator returned by groupby 
join the keys together 
すべて1つのきれいなラインで行うことができます

..

1

+1。カフオフ、のようなもの:Pythonの2.7.2での私のために

from itertools import groupby 
def remove_dupes(arg): 
    # create generator of distinct characters, ignore grouper objects 
    unique = (i[0] for i in groupby(arg)) 
    return ''.join(unique) 

クックス

1

まず第一に、あなたは、この場合(「Pythonの不変の文字列を」GoogleのPythonで文字列から何かを削除することはできません。明確ではない)。

M最初のアプローチは、次のようになります。

foo = '12233322155552' 
bar = '' 
for chr in foo: 
    if bar == '' or chr != bar[len(bar)-1]: 
     bar += chr 

や、itertoolsを使用して、上からヒント:

''.join([ k[0] for k in groupby(a) ]) 
0
t = '12233322155552' 
for i in t: 
    dup = i+i 
    t = re.sub(dup, i, t) 

あなたは1232152

5
import re 
answer = re.sub(r'(\d)\1+', r'\1', '12233322155552') 
0
number = '12233322155552' 
temp_list = [] 


for item in number: 
    if len(temp_list) == 0: 
     temp_list.append(item) 

    elif len(temp_list) > 0: 
     if temp_list[-1] != item: 
      temp_list.append(item) 

print(''.join(temp_list)) 
として最終的な出力を得ることができます
3

あなたはitertoolsを使用することができ、ここで(Pythonはすでに擬似コードにかなりくそ近いですが)正確なコードを与えないで1つのライナー

>>> s = '12233322155552' 
>>> ''.join(i for i, _ in itertools.groupby(s)) 
'1232152' 
関連する問題