두 개의 바 이 너 리 문자열 을 지정 하여 합 (바 이 너 리 로 표시) 을 되 돌려 줍 니 다.

67. 이 진 구 화
두 개의 바 이 너 리 문자열 을 지정 하여 합 (바 이 너 리 로 표시) 을 되 돌려 줍 니 다.
비 어 있 는 문자열 로 입력 하고 숫자 1 과 0 만 포함 합 니 다.
예제 1: 입력: a = "11", b = "1" 출력: "100"
예제 2: 입력: a = "1010", b = "1011" 출력: "10101"
출처: 리 트 코드 (LeetCode) 링크: 링크 저작권 은 네 크 라인 네트워크 에 있 습 니 다.상업 전 재 는 정부 에 연락 하여 권한 을 부여 해 주 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
분석: 입력 문자열 을 반전 시 키 고 모든 항목 을 옮 겨 다 니 며 바 이 너 리 덧셈 과 진 위 를 연산 합 니 다. 마지막 진 위 는 특히 주의해 야 합 니 다.
C + + 소스 코드:
class Solution {
     
public:    string addBinary(string a, string b) {
             
	reserve(a);        
	reserve(b);        
	int i = 0;        
	char label = '0';        
	int t = 0;        
	string ans;        
	for(int i = 0;i < a.size() || i < b.size();i++)        
	{
                 
		if(i < a.size()) t = a[i] - '0' + t;            
		if(i < b.size()) t = b[i] - '0' + t;            
		if(t >= 2)            
		{
                     	
			ans += to_string(t % 2);                
			t = t / 2;            
		}            
		else            
		{
                     
			ans += to_string(t);                
			t = 0;            
		}        
	}        
	if(t)            
		ans += to_string(1);        
	reserve(ans);        
	return ans;    
}    
void reserve(string &str)//        
{
             
	int left = 0;        
	int right = str.length() - 1;        
	while(left < right)        
	{
                 
		swap(str[left],str[right]);            
		left++;            
		right--;        
	}    
}
};

좋은 웹페이지 즐겨찾기