首頁 >後端開發 >C++ >在C語言中,字串中任兩個相同字元之間的最大字元數

在C語言中,字串中任兩個相同字元之間的最大字元數

王林
王林轉載
2023-09-17 20:53:021242瀏覽

在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

Note − 如果輸入字串為“abcdefg” ,則沒有重複字符,因此函數將返回-1。

下面程式中使用的方法如下

  • 我們使用一個字元陣列來儲存字串Str[]

  • 函數maxChars( char str[],int n) 用來計算任兩個重複字母之間的最大字元數。

  • 我們將變數 maxC 初始化為-1。

  • 在 for 迴圈中從字串的開頭遍歷陣列。

  • 在嵌套的 for 循環中遍歷剩餘的字符,並蒐索是否有重複字符(如果 str[i] == str[j])。

  • 如果為真,則透過減去索引計算字元之間的差異(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

以上是在C語言中,字串中任兩個相同字元之間的最大字元數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除