เราได้รับสตริงของตัวอักษร อาร์เรย์สามารถมีการเกิดซ้ำของตัวอักษรเดียวกันอย่างน้อยสองครั้ง งานคือการหาจำนวนตัวอักษรสูงสุดระหว่างสองครั้งของตัวอักษรใดตัวอักษรหนึ่ง หากไม่มีการซ้ำของตัวอักษรใดๆ ให้คืนค่า -1
ตัวอย่าง
อินพุต — string str = "abcdba"
เอาต์พุต — จำนวนตัวอักษรสูงสุดระหว่างสองตัวอักษรเดียวกันในสตริง — 4
คำอธิบาย — ตัวอักษรที่ซ้ำกันคือ 'a' และ 'b' เท่านั้นพร้อมดัชนี —
1. 'a' ดัชนีแรก 0 ดัชนีสุดท้าย 5 ตัวอักษรระหว่าง = 5-0-1 = 4 2. 'b' ดัชนีแรก 1 ดัชนีสุดท้าย 4 ตัวอักษรระหว่าง = 4-1-1 = 2 จำนวนตัวอักษรสูงสุดระหว่างตัวอักษรซ้ำ: 4
อินพุต — string str = "AbcAaBcbC"
เอาต์พุต — จำนวนตัวอักษรสูงสุดระหว่างสองตัวอักษรเดียวกันในสตริง — 5
วิธีการที่ใช้ในโปรแกรม
- รับอาร์เรย์ตัวอักษรที่มีสตริงเป็น Str[]
- ฟังก์ชัน maxChars(char str[], int n) ใช้คำนวณจำนวนตัวอักษรสูงสุดระหว่างตัวอักษรซ้ำ
- กำหนดตัวแปร maxC เริ่มต้นเป็น -1
- ในลูป for วนอาร์เรย์สตริงจากจุดเริ่มต้น
- ใน nested for loop วนตัวอักษรที่เหลือและค้นหาการซ้ำถ้ามี (if (str[i] == str[j]))
- ถ้าเป็นจริง ให้คำนวณความต่างของตัวอักษรโดยลบดัชนี (temp = j-i-1)
- ถ้าค่านี้เป็นค่าสูงสุดที่พบจนถึงตอนนี้ ให้เก็บใน maxC
- คืนค่า maxC หลังจากวนสตริงทั้งหมด
ตัวอย่างโค้ด
#include <stdio.h>
#include <string.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;
}
// โค้ดหลัก
int main() {
char Str[] = "AbcAaBcbC";
printf("จำนวนตัวอักษรสูงสุดระหว่างสองตัวอักษรเดียวกันในสตริง: %d", maxChars(Str, 9));
return 0;
}
ผลลัพธ์
หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —
จำนวนตัวอักษรสูงสุดระหว่างสองตัวอักษรเดียวกันในสตริง: 5