CSDN上のブロガーへの参照を提供し、C ++のコードを:
クラスソリューション{ パブリック: INT confusingNumberII(INT N){ N = N。 ANS = 0; 検索(0); ANSを返します。 } プライベート: int型nは、ANS; ボイド検索(長い長いNUM){ IF(NUM> n)のリターン; IF(NUM){ IF(!回転(NUM)= NUM)++ ANS。 } IF(NUM)検索(NUM * 10)。 検索(NUM * 10 + 1); 検索(NUM * 10 + 6)。 検索(NUM * 10 + 8)。 検索(NUM * 10 + 9)。 } 長い長い回転(長い長いX){ 長い長Y = 0。 用(; X; X / = 10){ int型のk = X%10。 スイッチ(K){ ケース6:K = 9。ブレーク; ケース9:K = 6。ブレーク; } 、Y = Y * 10 + K。 } Yを返します。 } }。
私のpythonを変換しようとするが、それがタイムアウトしました:
1 クラスのソリューション: 2 デフ__init __(自己): 3 self.n = 0 4 self.ans = 0 5 6 DEF confusingNumberII(自己、N:整数) - > INT : 7 self.n = N 8 self.searchNumber(0 ) 9 リターンself.ans 10 11 デフsearchNumber(自己、NUM): 12 もし NUM> self.n: 13 リターン 14 の#if self.confusingNumber(NUM): 15 もしNUM =!0とself.rotate(NUM)=!NUM: 16 self.ans + = 1 17 #print(STR(self.ans)+ " :" + STR(NUM)) 18 であれば!NUM = 0 : 19 self.searchNumber(NUM * 10 ) 20 self.searchNumber(NUM * 10 + 1 ) 21 self.searchNumber(NUM * 10 + 6 ) 22 self.searchNumber(NUM * 10 + 8 ) 23 self.searchNumber(NUM * 10 + 9 ) 24 25 DEF回転(自己、X) 26 、Y = 0 27 ながら!X = 0 : 28 、K = X%10 29 もし k個の== 6 : 30 、K = 9 31 のelif k個の== 9 : 32 、K = 6 33 、Y = Y * 10 + K 34 X = X // 10 35 返す yと
タイムアウトのテストケース:10億、答えは:1950627、私のネイティブの実行時間でのpython:11.3s。
現在、解決策を期待していませんでした。