0

コードインタビューの解読からインタビューの質問を練習しています。

問題は、各スペース (' ') を '%20' に置き換えることです。文字列の末尾には、文字列内の各スペースに対して 2 つの余分なスペースがあります。

入力例: str = "b_g_f_ _ _ _" (アンダースコアはスペースを表します。より簡単に表現できます)

output: str2 = "b%20g%20f"

現在、出力が正しく機能していません

input: "b c  "

output: "b%20c%20%20"

correct output: "b%20c"

コード:

def editstr(str):
    str2 = ""
    length = len(str)
    count = 0
    while 3*count < length:
        for char in str:
            if ord(char) < 257 and ord(char) >= 0 and ord(char) != 32:
                str2 = str2 + char
                count += 1
            else:
                if ord(char) == 32:
                    str2 = str2 + ("%20")
                    count += 3
    print str2
4

5 に答える 5

3

Python 文字列は不変です。したがって、Python でそのような文字列置換を実装したい場合、入力文字列の余分なスペースは役に立ちません。Python で問題を解決したい場合は、Pythonic の方法で行います。

def editstr(s):
    n = s.count(' ')
    if n == 0: return s
    return s[:-2*n/3].replace(' ', '%20')

これにより、最後に追加された「余分な」スペースが削除され.replace、実際の文字列置換に使用されます。

于 2013-09-30T18:42:46.903 に答える