Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C의 문자열에서 동일한 두 문자 사이의 최대 문자 수

<시간/>

우리에게는 일련의 알파벳이 주어집니다. 배열에는 동일한 문자가 두 번 이상 나타날 수 있습니다. 여기서 작업은 두 문자 사이의 최대 문자 수를 찾는 것입니다. 문자가 반복되지 않으면 -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