>백엔드 개발 >C++ >주어진 문자의 모든 발생을 지정된 대체 문자로 대체하여 문자열을 수정합니다.

주어진 문자의 모든 발생을 지정된 대체 문자로 대체하여 문자열을 수정합니다.

WBOY
WBOY앞으로
2023-09-08 10:17:02858검색

주어진 문자의 모든 발생을 지정된 대체 문자로 대체하여 문자열을 수정합니다.

이 문제에서는 문자 쌍 배열의 주어진 문자를 기반으로 주어진 문자열의 문자를 바꿔야 합니다. 우리는 두 가지 다른 솔루션에 대해 논의할 것입니다. 첫 번째 방법에서는 주어진 문자열의 문자와 문자 쌍을 반복하여 각 문자를 바꿉니다.

두 번째 방법에서는 길이가 26인 배열을 사용하여 각 문자와 관련된 대체 문자를 저장하고 주어진 문자열의 문자를 변경합니다.

문제 설명 − N개의 소문자 알파벳 문자를 포함하는 문자열 str이 제공됩니다. 또한 문자 쌍을 포함하는 배열이 제공됩니다. 주어진 문자열의 pair[i][0] 문자를 pair[i][1]로 바꿔야 합니다.

예제 예

으아아아 으아아아

지침

여기서 'x'는 'a'로, 'y'는 'b'로, 'z'는 'c'로 대체됩니다.

으아아아 으아아아

지침

문자열에서 'a'는 'e'로 대체되고, 'b'는 't'로 대체되며, 'e'는 'f'로 대체되고, 'r'은 's'로 대체됩니다.

방법 1

이 방법에서는 각 문자 쌍을 반복하고 주어진 문자열에서 일치하는 문자를 바꿉니다. 각 루프의 문자열을 반복하려면 두 개의 중첩 루프가 필요합니다.

알고리즘

  • 1단계 - 문자열의 크기를 변수 'N'에 저장하고 배열을 변수 'M'에 저장합니다.

  • 2단계 - 'temp' 변수에 문자열 복사본을 저장합니다.

  • 3단계 - for 루프를 사용하여 쌍 목록을 반복합니다.

  • 4단계 − 루프에서 첫 번째 문자를 변수 'a'에 저장하고 두 번째 문자를 변수 'b'에 저장합니다.

  • 5단계 - 중첩 루프를 사용하여 문자열을 반복합니다.

  • 6단계 − 중첩 루프에서 주어진 문자열의 현재 문자가 'a'와 같으면 임시 문자열에서 현재 문자를 'b'로 바꿉니다.

  • 7단계 - temp 값을 반환합니다.

으아아아

출력

으아아아

시간 복잡도 - O(N*M), 여기서 N은 문자열의 길이이고 M은 문자 쌍 배열의 길이입니다.

공간 복잡도 - O(N) 왜냐하면 임시 변수에 새 문자열을 저장하기 때문입니다.

방법 2

이 방법을 사용하면 크기가 26인 배열을 만들 수 있습니다. 그런 다음 현재 문자 위치에 대체 가능한 문자를 저장할 수 있습니다. 마지막으로 배열에서 교체 가능한 요소를 가져와 문자열의 각 문자를 업데이트할 수 있습니다.

알고리즘

  • 1단계 - 문자열 크기를 'N'으로, 배열 크기를 'M'으로 가져옵니다.

  • 2단계 - 길이가 26인 "초기" 및 "최종" 배열을 정의합니다.

  • 3단계 - 문자열을 반복하고 "str[Y] - a"의 초기 및 최종 배열 인덱스에 str[Y]를 저장합니다. 여기서 str[Y] - 'a' 는 문자의 ASCII 값을 기준으로 0에서 25 사이의 인덱스를 제공합니다.

  • str[Y]를 초기 및 최종 배열의 'str[Y] - a' 위치에 저장하는 이유는 문자가 문자열에 있지만 문자 쌍에는 없으면 이를 최종 문자열 상수에 유지할 수 있기 때문입니다. .

  • 4단계 - 주어진 문자 쌍 배열을 반복합니다. 루프 내에서 중첩 루프를 사용하여 초기 배열을 반복합니다. 현재 쌍의 첫 번째 문자가 "초기" 배열의 문자와 같으면 "최종" 배열의 문자가 현재 쌍의 두 번째 문자로 업데이트됩니다.

  • 5단계 − 'result' 변수를 정의하고 빈 문자열로 초기화합니다.

  • 6단계 - 입력 문자열을 반복하고 "최종" 배열에서 현재 문자에 ​​해당하는 문자를 가져와 "결과" 문자열에 추가합니다.

  • 7단계 - '결과' 문자열을 반환합니다.

으아아아

출력

으아아아

시간 복잡도 - O(N), 중첩 루프, 상수 반복만 가능합니다.

공간 복잡도 - O(1), 길이가 26인 상수 배열을 사용하기 때문입니다.

위 내용은 주어진 문자의 모든 발생을 지정된 대체 문자로 대체하여 문자열을 수정합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제