Rumah >pembangunan bahagian belakang >C++ >Ubah suai rentetan dengan menambah setiap aksara pada jarak dari hujung perkataan
Apabila berurusan dengan rentetan, kadangkala kita perlu mengubah suainya dengan cara tertentu untuk memenuhi keperluan tertentu. Salah satu keperluan ialah mengubah suai rentetan dengan meningkatkan jarak setiap aksara dari hujung perkataan. Dalam artikel ini, kita akan membincangkan cara untuk menyelesaikan masalah ini menggunakan C++.
Diberi rentetan S, ubah suai rentetan dengan meningkatkan jarak setiap aksara dari hujung perkataan.
Untuk menyelesaikan masalah ini, kita boleh ikuti langkah-langkah berikut:
Buat rentetan S yang diberikan kepada perkataan individu.
Lelaran pada setiap perkataan, dan untuk setiap aksara, tambahkan kedudukan dari hujung kepada nilai ASCIInya.
Tambah perkataan yang diubah suai pada rentetan akhir, dipanggil res.
Ulang langkah 2 dan 3 untuk semua perkataan dalam rentetan.
Kembalikan rentetan akhir yang diubah suai.
Ini ialah pelaksanaan kod dalam C++:
#include <iostream> #include <sstream> #include <vector> using namespace std; string modifyString(string S) { string res = ""; vector<string> words; // Tokenize the string into individual words istringstream ss(S); string word; while (ss >> word) { words.push_back(word); } // Iterate over each word for (int i = 0; i < words.size(); i++) { string word = words[i]; string modified_word = ""; // Iterate over each character in the word for (int j = 0; j < word.length(); j++) { int ascii_value = word[j] + (word.length() - 1 - j); modified_word += char(ascii_value); } // Add the modified word to the final string res += modified_word; // Add a space to the final string if there are more words to be added if (i != words.size() - 1) { res += " "; } } return res; } int main() { string S = "hello world"; string modified_S = modifyString(S); cout << modified_S << endl; // Outputs "oekmo kmlqx" return 0; }
lhnmo {rtmd
Kerumitan masa penyelesaian ialah O(N*M), di mana N ialah bilangan perkataan dalam rentetan dan M ialah purata panjang perkataan.
Kerumitan ruang penyelesaian ialah O(N*M), dengan N ialah bilangan perkataan dalam rentetan dan M ialah purata panjang perkataan.
Dalam contoh di atas, kami mengambil rentetan "hello world" sebagai input. Rentetan yang diubah suai ialah "oekmo kmlqx". Dalam rentetan yang diubah suai, aksara pertama 'h' diubah suai kepada 'o' kerana jaraknya dari hujung perkataan ialah 4. Begitu juga, watak lain telah diubah suai.
Pelaksanaan kod mula-mula memecahkan rentetan S yang diberikan kepada perkataan dan menyimpannya dalam vektor. Ia kemudiannya melalui setiap perkataan dan untuk setiap aksara dalam perkataan itu, menambahkannya dari kedudukan akhir kepada nilai ASCIInya. Kata-kata yang diubah suai kemudiannya ditambahkan pada rentetan terakhir. Akhirnya, kod itu mengembalikan rentetan yang diubah suai.
Ringkasnya, kami berjaya mengubah suai rentetan yang diberikan dengan meningkatkan jarak setiap aksara dari hujung perkataan. Kaedah dan pelaksanaan di atas boleh digunakan untuk menyelesaikan masalah serupa yang berkaitan dengan operasi rentetan.
Atas ialah kandungan terperinci Ubah suai rentetan dengan menambah setiap aksara pada jarak dari hujung perkataan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!