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

พิมพ์อักขระเฉพาะทั้งหมดของสตริงตามลำดับใน C++


ในปัญหานี้ เราได้รับสตริง งานของเราคือพิมพ์อักขระที่แตกต่างกันทั้งหมดของสตริงตามลำดับที่ปรากฏในสตริง

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหาของเรากัน

Input: tutorials Point
Output: uralsPn

มีหลายวิธีในการแก้ปัญหานี้ แต่เราจะพูดถึงวิธีที่มีประสิทธิภาพมากที่สุด แบบเรียบง่ายรวมถึงการซ้อนลูปด้วย

สำหรับสิ่งนี้ เราจะใช้สองอาร์เรย์ขนาด 256 (จัดเก็บอักขระ 8 บิต)

อันดับแรก เราจะเริ่มต้นค่าทั้งหมดของอาร์เรย์ตัวนับเป็น 0 และค่าทั้งหมดของอาร์เรย์ดัชนีเป็น n (ความยาวของสตริง) ในการข้ามผ่านของสตริง str และสำหรับทุกอักขระ c ให้เพิ่ม count[x] ถ้า count[x] =1, index[x] =i ถ้า count[x] =2, index[x] =n. จัดเรียงดัชนีและพิมพ์อักขระ

ตัวอย่าง

รหัสแสดงการใช้งานโซลูชันของเรา

#include <bits/stdc++.h>
using namespace std;
const int MAX_CHAR = 256;
void printDistinctCharacters(string str) {
   int n = str.length();
   int count[MAX_CHAR];
   int index[MAX_CHAR];
   for (int i = 0; i < MAX_CHAR; i++) {
      count[i] = 0;
      index[i] = n;
   }
   for (int i = 0; i < n; i++) {
      char x=str[i];
      ++count[x];
      if (count[x] == 1 && x !=' ')
         index[x] = i;
      if (count[x] == 2)
         index[x] = n;
   }
   sort(index, index+MAX_CHAR);
   for (int i=0; i<MAX_CHAR && index[i] != n; i++)
   cout<<str[index[i]]<<" ";
}
int main() {
   string str = "tutorialsPoint";
   cout<<"All distinct Characters of the string '"<<str<<"' are :\n";
   printDistinctCharacters(str);
   return 0;
}

ผลลัพธ์

All distinct Characters of the string 'tutorialsPoint' are −
u r a l s P n