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

จำนวนอักขระสูงสุดระหว่างอักขระสองตัวที่เหมือนกันในสตริงใน C


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