문자열 str[]이 입력으로 주어집니다. 목표는 str[]과 길이가 같고 문자 위치가 i번째 문자가 (i1) 또는 (i) 또는 (i+1) 위치의 문자로 대체되는 str[]의 단어를 계산하는 것입니다.
첫 번째 문자 교체는 i 또는 i+1 위치에서 시작됩니다.
마지막 문자 교체는 위치 i-1 또는 i에서 시작됩니다.
예를 들어 이해합시다.
입력 - str[] ="TPP"
출력 − i번째 글자가 주어진 단어의 (i-1)번째, i번째 또는 (i+1)번째 글자인 단어의 개수는 - 4
설명
Replacing T by T (i)th or 1st P (i+1)th = TPP, PPP Replacing 1st P by T (i-1)th, P (i)th, or P(i+1)th = TTP, TPP, TPP Replacing 2nd P by P(i-1)th or P(i)th = TPP, TPP Unique combination of replacements: TPP, PPP, TTP, PTP
입력 - str ="아아아"
출력 - i번째 글자가 주어진 단어의 (i-1)번째, i번째 또는 (i+1)번째 글자인 단어의 개수:1
설명
Replacing a by a (i)th or 2nd a (i+1)th = aaa, aaa Replacing 2nd a by a (i-1)th, a (i)th, or a(i+1)th = aaa, aaa, aaa Replacing 3rd a by a(i-1)th or a(i)th = aaa, aaa Unique combination of replacements: aaa
아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.
우리는 모든 편지에 세 가지 가능성이 있다는 것을 알고 있습니다. 현재 문자 i의 경우 모든 (i-1)번째, i번째, (i+1)번째가 다르면 3가지 옵션이 있습니다. 2개가 같으면 2개의 옵션이 있고 모두 같으면 1개의 옵션만 있습니다.
따라서 문자열을 탐색하고 고유성을 확인하고 문자에 따라 3, 2 또는 1을 곱합니다. 첫 번째와 마지막 문자에 대해 고유성을 확인하고 유사한 방식으로 2 또는 1을 곱합니다.
-
문자열 str[]을 문자 배열로 사용합니다.
-
함수 total(char str[], int length)는 문자열을 받아 i번째 문자가 주어진 단어의 (i-1)번째, i번째 또는 (i+1)번째 문자인 단어의 개수를 반환합니다. str[]의 단어.
-
초기 개수를 1로 간주합니다. str[] 자체의 단어입니다.
-
단일 문자가 있는 경우 길이는 1이 되고 1을 반환합니다.
-
인덱스 0에서 첫 번째 문자를 확인합니다. 두 번째 문자와 같으면 str[0]==str[1] thenmultiply count by 1
-
서로 다른 경우 count에 2를 곱합니다.
-
이제 인덱스 i=1에서 i
까지 for 루프를 사용하여 두 번째 문자에서 두 번째 마지막 문자까지 순회합니다. -
인덱스 i의 각 문자에 대해. str[i]가 str[i-1] 또는 str[i+1]과 같은지 확인합니다. 그렇다면 count에 1을 곱하십시오.
-
둘 중 하나라도 같으면 count에 2를 곱합니다.
-
그렇지 않으면 3을 곱합니다.
-
마지막 문자의 경우 str[i-1]==str[i]인지 확인합니다. true이면 count에 1을 곱하고 그렇지 않으면 2를 곱합니다.
-
마지막에 우리는 그러한 별개의 단어를 세게 될 것입니다.
-
결과로 카운트를 반환합니다.
예시
#include<bits/stdc++.h> using namespace std; int total(char str[], int length){ int count = 1; if (length == 1){ return count; } if (str[0] == str[1]){ count = count * 1; } else{ count = count * 2; } for (int j=1; j<length-1; j++){ if (str[j] == str[j-1] && str[j] == str[j+1]){ count = count * 1; } else if (str[j] == str[j-1]){ count = count * 2; } else if(str[j] == str[j+1]){ count = count * 2; } else if(str[j-1] == str[j+1]){ count = count * 2; } else{ count = count * 3; } } if (str[length - 1] == str[length - 2]){ count = count * 1; } else{ count = count * 2; } return count; } int main(){ char str[] = "TPP"; int length = strlen(str); cout<<"Count of words whose i-th letter is either (i-1)-th, i-th, or (i+1)-th letter of given word are: "<<total(str, length) << endl; return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of words whose i-th letter is either (i-1)-th, i-th, or (i+1)-th letter of given word are: 4