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

จำนวนองค์ประกอบที่ใหญ่กว่าทางด้านขวาในสตริงใน C++


จากสตริง เราต้องนับจำนวนองค์ประกอบที่ใหญ่กว่าทางด้านขวาของอักขระแต่ละตัว มาดูตัวอย่างกัน

ป้อนข้อมูล

string = "abc"

ผลผลิต

2 1 0

มีองค์ประกอบที่ใหญ่กว่า a 2 ตัวทางด้านขวา

มีองค์ประกอบที่ใหญ่กว่า b 1 ตัวอยู่ทางด้านขวา

มีองค์ประกอบที่ใหญ่กว่า c 0 ตัวที่ด้านขวา

อัลกอริทึม

  • เริ่มต้นสตริง

  • เริ่มต้นอาร์เรย์เพื่อติดตามการนับ

  • เขียนสองลูปเพื่อวนซ้ำบนสตริง

    • ใช้ถ่านทีละตัวและเปรียบเทียบกับอักขระทั้งหมดหลังจากนั้น

    • เพิ่มจำนวนอักขระที่สอดคล้องกันในอาร์เรย์การนับหากองค์ประกอบปัจจุบันน้อยกว่าองค์ประกอบถัดไป

  • พิมพ์จำนวนตัวอักษรทั้งหมด

การนำไปใช้

ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++

Implementation

Following is the implementation of the above algorithm in C++

#include <bits/stdc++.h>
using namespace std;
void countCharNextLargerElementsCount(string str) {
   int len = str.length(), count[len];
   for (int i = 0; i < len; i++) {
      count[i] = 0;
   }
   for (int i = 0; i < len; i++) {
      for (int j = i + 1; j < len; j++) {
         if (str[i] < str[j]) {
            count[i]++;
         }
      }
   }
   for (int i = 0; i < len; i++) {
      cout << count[i] << " ";
   }
   cout << endl;
}
int main() {
   string str = "abcdefgh";
   countCharNextLargerElementsCount(str);
   return 0;
}


ผลลัพธ์



หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

7 6 5 4 3 2 1 0