我們得到一個字母字串。數組中至少會有兩個相同字元的出現。這裡的任務是找到任兩個相同字元之間的最大字元數。如果沒有任何字元的重複,則傳回-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中文網其他相關文章!