우리에게는 일련의 알파벳이 주어집니다. 배열에는 동일한 문자가 두 번 이상 나타날 수 있습니다. 여기서 작업은 두 문자 사이의 최대 문자 수를 찾는 것입니다. 문자가 반복되지 않으면 -1을 반환합니다.
입력 - 문자열 str ="abcdba"
출력 − 문자열에서 동일한 두 문자 사이의 최대 문자 수 − 4
설명 − 반복 문자는 인덱스만 있는 'a'와 'b'입니다. −
1. 2‘a’ first index 0 last 5 , characters in between 5-0-1=4 2. ‘b’ first index 1 last 4 , characters in between 4-1-1=2 Maximum character in between repeating alphabets : 4
입력 - 문자열 str ="AbcAaBcbC"
출력 − 문자열에서 동일한 두 문자 사이의 최대 문자 수 − 5
설명 − 반복 문자는 인덱스만 있는 'A' , 'b' , 'c'입니다. −
1. ‘A’ first index 0 last 3 , characters in between 3-0-1=2 2. ‘b’ first index 1 last 7 , characters in between 7-1-1=5 3. ‘c’ first index 2 last 6 , characters in between 6-2-1=3 Maximum character in between repeating alphabets : 5
참고 - 입력 문자열이 "abcdefg"인 경우 반복되는 문자가 없으므로 함수는 -1을 반환합니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
Str[]
로 문자열이 있는 문자 배열을 취합니다. -
maxChars( char str[],int n) 함수는 두 개의 반복 알파벳 사이의 최대 문자 수를 계산하는 데 사용됩니다.
-
변수 maxC를 -1로 초기화합니다.
-
for 루프 내부는 처음부터 문자열 배열을 순회합니다.
-
중첩 for 루프에서 나머지 문자를 탐색하고 반복이 있는 경우 검색합니다. ( if ( str[i] ==str[j] ).
-
true이면 인덱스를 빼서 문자 간의 차이를 계산합니다. ( temp=j-i-1)
-
이 값이 지금까지 찾은 최대값이면 maxC에 저장합니다.
-
전체 문자열을 순회한 후 maxC를 반환합니다.
예시
#include <stdio.h> #include <stdio.h> #include <math.h> int maxChars(char str[],int n){ int size = n; int maxC = -1; for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (str[i] == str[j]){ int temp=abs(j-i-1); maxC = maxC>temp?maxC:temp; } return maxC; } // Driver code int main(){ char Str[] = "AbcAaBcbC"; printf("Maximum number of characters between any two same character in a string :%d", maxChars(Str,9) ); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Maximum number of characters between any two same character in a string : 5