Rumah > pembangunan bahagian belakang > C++ > Ubah suai rentetan dengan menambah setiap aksara pada jarak dari hujung perkataan

Ubah suai rentetan dengan menambah setiap aksara pada jarak dari hujung perkataan

王林
Lepaskan: 2023-09-12 08:17:02
ke hadapan
679 orang telah melayarinya

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++.

Pernyataan Masalah

Diberi rentetan S, ubah suai rentetan dengan meningkatkan jarak setiap aksara dari hujung perkataan.

Kaedah

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.

Contoh

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;
}
Salin selepas log masuk

Output

lhnmo {rtmd
Salin selepas log masuk

Kerumitan masa

Kerumitan masa penyelesaian ialah O(N*M), di mana N ialah bilangan perkataan dalam rentetan dan M ialah purata panjang perkataan.

Kerumitan ruang

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.

Kesimpulan

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!

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