Computer >> Máy Tính >  >> Lập trình >> lập trình C

Số ký tự tối đa giữa hai ký tự giống nhau bất kỳ trong một chuỗi trong C

Chúng tôi được cung cấp một chuỗi các bảng chữ cái. Mảng có thể có ít nhất hai lần xuất hiện của cùng một ký tự. Nhiệm vụ ở đây là tìm số ký tự tối đa giữa hai lần xuất hiện bất kỳ của một ký tự. Nếu không có sự lặp lại của bất kỳ ký tự nào thì trả về -1.

Đầu vào - string str =“abcdba”

Đầu ra −Số ký tự tối đa giữa hai ký tự bất kỳ trong một chuỗi - 4

Giải thích - Các ký tự lặp lại là ‘a’ và ‘b’ chỉ với các chỉ mục -

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

Đầu vào - string str =“AbcAaBcbC”

Đầu ra −Số ký tự tối đa giữa hai ký tự bất kỳ trong một chuỗi - 5

Giải thích - Các ký tự lặp lại là ‘A’, ‘b’, ‘c’ chỉ với các chỉ mụ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

Lưu ý - nếu chuỗi đầu vào là “abcdefg”, không có ký tự lặp lại nên hàm sẽ trả về -1.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng ta lấy một mảng ký tự có một chuỗi ký tự là Str []

  • Hàm maxChars (char str [], int n) được sử dụng để tính số ký tự tối đa giữa hai bảng chữ cái lặp lại bất kỳ.

  • Chúng tôi khởi tạo biến maxC bằng -1.

  • Vòng lặp bên trong for duyệt qua mảng chuỗi từ đầu.

  • Trong vòng lặp for lồng nhau lướt qua các ký tự còn lại và tìm kiếm các lần lặp lại nếu có. (if (str [i] ==str [j]).

  • Nếu nó đúng thì tính toán chênh lệch giữa các ký tự bằng cách trừ đi các chỉ số. (temp =j-i-1)

  • Nếu giá trị này là lớn nhất được tìm thấy cho đến nay, thì hãy lưu trữ nó trong maxC.

  • Trả về maxC sau khi duyệt qua toàn bộ chuỗi.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Maximum number of characters between any two same character in a string : 5