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