Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

จำนวนตัวอักษรสูงสุดระหว่างสองตัวอักษรเดียวกันในสตริงในภาษา C

เราได้รับสตริงของตัวอักษร อาร์เรย์สามารถมีการเกิดซ้ำของตัวอักษรเดียวกันอย่างน้อยสองครั้ง งานคือการหาจำนวนตัวอักษรสูงสุดระหว่างสองครั้งของตัวอักษรใดตัวอักษรหนึ่ง หากไม่มีการซ้ำของตัวอักษรใดๆ ให้คืนค่า -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