Leetcode - 이진 합 (67)

설명 제목 : 두 개의 바이너리 문자열을 감안할 때, 그리고 복귀 그들의 (이진수로 표현). 그리고 비어 있지 않은 입력 문자열은 숫자 만 포함  1 하고  0.

A는 생각 : 사용 내장 된 기능 파이썬

1  해결책 :
 2      DEF -> addBinary (: STR, B STR 자기, a) STR :
 3           ' {0 : B} ' .format (INT (a, 2) + INT (b, 2)) #의 INT ( X , 베이스 = 10 ) 

참조의 사용 형식의 일부에 대해 https://www.cnblogs.com/benric/p/4965224.html

생각이 : 캐리 여부를 나타내는 설정 플래그.

. 1  해결책 :
 2      DEF addBinary (자기, A : STR, B : STR) -> STR :
 . (3)          에서 플래그 = 0
 . 4          N- = 최대 (렌 (A), 렌 (B))
 . 5          A, B = a.zfill ( N-) b.zfill (N-)     # zfill 좌측 단부 N- 캐릭터까지 제로 패딩된다에서 
6.          ANS = ' 
7.          위한 I  범위 (1 렌 (A). +1 )
 . 8              IF A [-i ] == ' . 1 ' :
 . 9                  .에서 플래그 = 1 +
 10              IF B [-i] == ' 1. ' :
. 11                  .에 플래그 + 1 =
 12 인              IF 에서 플래그 == 2 % 1 :.     # 플래그는 캐리 디지트를 나타내는 
13                  ANS = + ' 1. ' 
14              다른 : 
 15                  ANS + = ' 0 ' 
(16)              에서 플래그 // = 2
 (17).          IF 에서 플래그 == 1. :
 18은              ANS + = ' 1. ' 
19.          리턴 ANS [-1 : -. 1]     # 역방향 출력

세 아이디어 없음 가산 연산은 비트에서 계산되지 않는다.

           도시 된 바와 같이, 반송되지는 가산기 (단, A의 값과 B를 동시에 1 없을 때) 단일 XOR 연산에 대응하는 비트

 

     도시 된 바와 같이, 상기 반송은 계산에 의해 발생. 즉, 녹색 상자 청색 박스에 의해 생성 된 캐리를 추가하기 전에 해당 비트에 추가 한 예에 대해서는

 

 캐리가 생성되지 원경까지 루프는 생성 된 결과를 추가 가산기에 전달하지 않을 것이다 (즉, 반송시 = 0)

. 1  해결책 :
 2      DEF addBinary (자기, A : STR, B : STR) -> STR :
 . (3)          X, Y = INT (A, 2), INT (B, 2 )
 4.          그동안 Y :
 5.              ANS = X ^ Y     # XOR 연산 
6.              캐리 = (X 및 Y)와 1 <<.     #의 위상 및 좌측 
7.              X, Y = 캐리와 ANS,
 8.          반환 함 (X)에 [2]     # 이진 출력 0bxxxx 때문에

 

추천

출처www.cnblogs.com/shawn-young/p/12601583.html
67