2017-04-04 64 views
-4

給定一個號碼,返回具有非重複的數字,直到該編號的數字的計數從1計數的非重複的數字

測試用例1開始:

樣品輸入

7 

樣本輸出

7 

測試案例2:

樣品輸入

3456 

樣本輸出

2562 

我會寫程序,但我不知道是什麼問題陳述被要求爲樣本輸入測試用例令我困惑。

+1

@rsp OP沒有理解編寫代碼的問題。 –

+3

似乎是一個很好的問題,無論誰寫這個任務,而不是在這裏... –

+0

未來,請格式化你的問題更好一點,分享你嘗試的任何東西。該任務是要求從'1'到'n'有多少個數字不重複一個數字。例如,'1111'重複數字'1',4次。 '1122'重複2個不同的數字。 '1234'重複*無*數字。如果您在編寫代碼時遇到困難,請在此處詢問,但這類問題最好在聊天室中提問。 – Aaron3468

回答

3

問題含糊不清,因爲有兩種合理的方式來解釋「重複數字」。

  • 首先,如果連續兩次或多次具有相同的數字,則數字具有「重複數字」。例如12334有一個重複的數字(3)。

  • 其次,如果相同的數字出現兩次,則數字有重複的數字。所以1231在第一種意義上不會有重複的數字,但在這個意義上(1重複)。

通過檢查他們給出的測試用例,我們可以發現哪些含義是正確的。

def nonrep1(n): 
    return sum(all(c != d for c, d in zip(str(i), str(i)[1:])) for i in xrange(1, n+1)) 

def nonrep2(n): 
    return sum(all(str(i).count(d) < 2 for d in '') for i in xrange(1, n+1)) 

assert nonrep1(7) == 7 
assert nonrep1(3456) == 2562 

assert nonrep2(7) == 7 
assert nonrep2(3456) == 2562 

最終斷言失敗,所以「非重複」的第一要義是一個由問題制定者意圖。

我已經寫了一些略微愚蠢的簡化版本的程序,所以你現在仍然可以編寫自己的代碼,以瞭解問題所在。

+0

先生我無法理解返回語句。如果你會詳細說明一下 –

+0

只返回聲明將會很有幫助 –

1

問題是,給定一個數字N.找到有多少個數字從1到N哪些沒有重複數字。

在第一種情況下,有7個數字從1到7,沒有重複的數字。

在第二種情況下,有2562個數字,從1到3456,沒有重複的數字。

+0

對不起,我沒有看到這個問題的標題.. –

+0

yup它的自我解釋.. – Arvindsinc2