Program C++: susun semula kedudukan perkataan dalam susunan abjad

WBOY
Lepaskan: 2023-09-01 23:37:19
ke hadapan
1134 orang telah melayarinya

Program C++: susun semula kedudukan perkataan dalam susunan abjad

Dalam masalah ini, rentetan diberikan sebagai input dan kita perlu mengisih perkataan yang terdapat dalam rentetan dalam susunan leksikografi. Untuk melakukan ini, kami menetapkan indeks bermula dari 1 kepada setiap perkataan dalam rentetan (dipisahkan oleh ruang) dan mendapatkan output sebagai indeks yang diisih.

String = {“Hello”, “World”}
“Hello” = 1
“World” = 2
Salin selepas log masuk

Memandangkan perkataan dalam rentetan input telah disusun dalam susunan leksikografi, output akan dicetak sebagai "1 2".

Mari lihat beberapa senario input/hasil -

Dengan mengandaikan semua perkataan dalam rentetan input adalah sama, mari lihat hasilnya -

Input: {“hello”, “hello”, “hello”}
Result: 3
Salin selepas log masuk

Hasil yang diperolehi akan menjadi kedudukan terakhir perkataan.

Sekarang mari kita pertimbangkan rentetan input yang mengandungi perkataan yang bermula dengan huruf yang sama, output yang terhasil akan berdasarkan huruf seterusnya bagi huruf permulaan.

Input: {“Title”, “Tutorial”, “Truth”}
Result: 1 3 2
Salin selepas log masuk

Satu lagi senario input biasa untuk kaedah ini dan keputusan yang diperoleh adalah seperti berikut -

Input: {“Welcome”, “To”, “Tutorialspoint”}
Result: 2 3 1
Salin selepas log masuk

Nota - Kedudukan yang dikembalikan ialah kedudukan asal perkataan ini dalam rentetan input. Nombor ini tidak berubah setelah perkataan diisih dalam kaedah.

Algoritma

  • Kaedah ini dilakukan menggunakan vektor dan jenis data abstrak peta.

  • Gunakan lelaran automatik untuk melintasi rentetan input dalam julat rentetan.

  • Pertukaran abjad perkataan dilakukan dengan menolak elemen ini ke belakang jenis data vektor.

  • Setelah perkataan disusun semula secara leksikografi, kedudukan asal perkataan tersebut dalam rentetan dikembalikan sebagai output.

Contoh

Mari kita mempunyai rentetan iaitu ["artikel", "titik", "dunia"], dan susunan rentetan itu ialah -

“articles”: 1
“point”: 2
“world”: 3
Salin selepas log masuk

Kita boleh memetakan setiap rentetan dengan indeks. Kami kemudiannya boleh mengisih rentetan dan mencetak indeks peta. Kita boleh menggunakan peta, struktur data yang diisih dalam C++, untuk menyimpan pasangan nilai kunci. Mari kita cepat melaksanakan pendekatan kita.

#include <iostream>
#include <vector>
#include <map>
using namespace std;
vector<int> solve(vector<string>& arr) {
   map<string, int> mp;
   int index = 1;
   for(string s : arr)
      mp[s] = index++;
   vector<int> res;
   for(auto it : mp)
      res.push_back(it.second);
   return res;
}
int main() {
   vector<string> arr = {"articles", "point", "world"};
   vector<int> res = solve(arr);
   for(int i : res) cout << i << " ";
   return 0;
}
Salin selepas log masuk

Output

1 2 3
Salin selepas log masuk

Kini susunan semula rentetan akan menjadi -

“point,”
“articles,”
“world”
Salin selepas log masuk

Kerumitan masa - O(n * log n)

Kerumitan ruang - O(n)

KESIMPULAN

Kami menggunakan peta untuk mengisih dan memetakan sesuatu untuk kami. Kita juga boleh menggunakan peta cincang, mengisih vektor atau tatasusunan, dan kemudian mencetak indeks dalam peta cincang. Kerumitan masa ialah O(n*log(n)) dan kerumitan ruang ialah O(n).

Atas ialah kandungan terperinci Program C++: susun semula kedudukan perkataan dalam susunan abjad. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan