s1과 s2라는 두 개의 다른 문자열이 주어지고 작업은 s1과 s2의 고유한 문자를 결합하여 S라고 하는 문자열을 형성하고 이제 문자열 S에서 한 문자를 제거한 후 문자열을 형성하는지 확인합니다. 문자열 s1 또는 s2와 같습니다.
예
입력 - 문자열 S1 ="버터", 문자열 S2 ="버터";
출력 - 한 번 제거한 후 두 문자열 중 하나와 같아지는 문자열 수는 다음과 같습니다. 1
설명 - 문자열 s1과 s2가 주어지고 문자열 S, 즉 '버터'에서 얻을 것이고 이제 문자열 S에서 문자 'b'를 제거하면 문자열 s1과 동일한 '완전'이 될 것이므로 개수는 1입니다.
입력 - 문자열 S1 ="뚱뚱한", 문자열 S2 ="쥐";
출력 - 한 번 제거한 후 두 문자열 중 하나와 같아지는 문자열 수는 다음과 같습니다. 2
설명 - 문자열 s1과 s2가 주어지고 문자열 S, 즉 'frat'를 형성할 것이고 이제 문자열 S에서 문자 'rs'를 제거하면 문자열 s1과 동일한 'fat'이 될 것이고 문자를 제거하면 'f' 문자열 s2와 동일한 'rat'가 되므로 개수는 2입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
- 2개의 문자열 s1과 s2를 선언하고 문자열 s1의 크기를 계산하고 추가 처리를 위해 데이터를 함수에 전달합니다.
- 변수 개수를 선언하고 가능한 최대 출력이 2이므로 2로 설정합니다.
- 루프 탐색의 시작과 끝으로 두 개의 임시 변수를 선언합니다.
- 0에서 문자열 s1의 크기까지 루프를 시작하고 루프 내부에서 IF s1[i]가 s2와 같지 않은지 확인한 다음 시작을 i로 설정하고 중단
- i에서 문자열 s1의 크기가 하나 작아질 때까지 다른 루프 FOR를 시작하고 루프 내부에서 IF s1이 s2와 같지 않은지 확인한 다음 end를 i로 설정하고 중단합니다.
- 끝의 IF 값이 시작보다 작은지 확인한 다음 개수를 26 *(문자열 s1 + 1의 크기)로 설정하고 개수를 반환합니다.
- ELSE IF 검사 시작이 끝과 같으면 카운트를 반환합니다.
- ELSE, 루프 FOR i에서 시작하여 끝까지 +1을 시작하고 루프 내부에서 IF s1[i]가 s2[i-1]과 같지 않음을 확인한 다음 카운트를 1만큼 감소시키고 중단합니다.
- i부터 시작 + 1까지 루프 FOR를 시작하고 IF s1[i-1]이 s2[i]와 같지 않은지 확인한 다음 카운트를 1만큼 감소시키고 중단합니다.
- 카운트를 반환합니다.
- 결과를 인쇄합니다.
예시
#include <bits/stdc++.h> using namespace std; int equal_removal(string S1, string S2, int size_S1) { int count = 2; int start; int end; for (int i = 0; i < size_S1; ++i) { if (S1[i] != S2[i]) { start = i; break; } } for (int i = size_S1 - 1; i >= 0; i--) { if (S1[i] != S2[i]) { end = i; break; } } if (end < start) { count = 26 * (size_S1 + 1); return count; } else if (start == end) { return count; } else { for (int i = start + 1; i <= end; i++) { if (S1[i] != S2[i - 1]) { count--; break; } } for (int i = start + 1; i <= end; i++) { if (S1[i - 1] != S2[i]) { count--; break; } } return count; } } int main() { string S1 = "utter"; string S2 = "butter"; int size_S1 = S1.length(); cout << "Count of strings that become equal to one of the two strings after one removal are: " << equal_removal(S1, S2, size_S1); return 0; }
위의 코드를 실행하면 다음 출력이 생성됩니다 -
출력
Count of strings that become equal to one of the two strings after one removal are: 1