ในปัญหานี้ เราได้รับข้อความค้นหาสตริง str และ Q ซึ่งประกอบด้วย twovalues a และ b งานของเราคือสร้างโปรแกรมเพื่อแก้แบบสอบถามสำหรับอักขระในสตริงที่ซ้ำกันใน C++
คำอธิบายปัญหา
ในการแก้ปัญหาแต่ละคำถาม เราต้องตรวจสอบว่าอักขระที่ดัชนี a และ b เหมือนกันหรือไม่ และคืนค่าตามนั้น
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล :str =“tutorialspoint”
Q =2
ข้อความค้นหา ={{0, 2}, $4, 7}}
ผลผลิต :ซ้ำแล้วซ้ำเล่า
ไม่ซ้ำ
คำอธิบาย
สำหรับคำถามที่ 1 , อักขระที่ดัชนี 0 คือ t และอักขระที่ดัชนี 2 คือ t ทั้งสองเป็นอักขระเดียวกัน
สำหรับคำถามที่ 1 อักขระที่ดัชนี 4 คือ r และอักขระที่ดัชนี 7 คือ l ทั้งสองไม่ใช่อักขระเดียวกัน
แนวทางการแก้ปัญหา
ในการแก้ปัญหา เราจะตรวจสอบความเท่าเทียมกันขององค์ประกอบที่ดัชนี a และ b หากดัชนีใด ๆ มากกว่าความยาวของสตริง be จะหาค่าของ (ดัชนี% len) เพื่อรับดัชนีของตัวละคร และผู้ใช้ดัชนีใหม่สำหรับการเปรียบเทียบ
ตัวอย่าง
#include <iostream> #include <string> using namespace std; bool isrepeated(string str, int len, int a, int b){ if(a > len) a %= len; if(b > len) b %= len; if(str[a] == str[b]) return true; else return false; } int main(){ string str = "tutorialspoint"; int len = str.length(); int Q = 3; int query[Q][2] = {{0, 2}, {3, 32}, {5, 18}}; for(int i = 0; i < Q; i++){ if(isrepeated(str, len, query[i][0], query[i][1])) cout<<"Character is repeated in both the index values"<<endl; else cout<<"Character is not repeated in both the index values"<<endl; } return 0; }
ผลลัพธ์
Character is repeated in both the index values Character is not repeated in both the index values Character is not repeated in both the index values