Rumah >pembangunan bahagian belakang >C++ >Semak sama ada aksara setiap perkataan boleh disusun semula untuk membentuk jujukan aritmetik (AP)

Semak sama ada aksara setiap perkataan boleh disusun semula untuk membentuk jujukan aritmetik (AP)

王林
王林ke hadapan
2023-09-08 20:53:081225semak imbas

Semak sama ada aksara setiap perkataan boleh disusun semula untuk membentuk jujukan aritmetik (AP)

Dalam artikel ini, kita akan membincangkan cara menyemak sama ada aksara setiap perkataan dalam rentetan tertentu boleh disusun semula untuk membentuk jujukan aritmetik (AP). Kami juga akan melaksanakan penyelesaian menggunakan C++ dan memberikan contoh untuk menggambarkan cara kod berfungsi.

Jujukan Aritmetik (AP)

Jujukan aritmetik (AP) ialah jujukan nombor di mana setiap sebutan diperoleh dengan menambahkan pemalar d pada sebutan sebelumnya. Pemalar d dipanggil toleransi.

Sebagai contoh, jujukan 1, 3, 5, 7, 9 ialah jujukan aritmetik dengan toleransi 2.

kaedah

Untuk menyemak sama ada aksara setiap perkataan dalam rentetan tertentu boleh disusun semula untuk membentuk jujukan aritmetik, kami akan melakukannya seperti berikut −

  • Kami akan memisahkan rentetan yang diberikan kepada perkataan individu.

  • Untuk setiap perkataan, kami akan mengisih aksara mengikut abjad.

  • Kami akan mengira toleransi aksara bersebelahan dalam perkataan yang disusun.

  • Jika toleransi adalah sama untuk semua pasangan aksara bersebelahan, maka aksara sesuatu perkataan boleh disusun semula untuk membentuk urutan aritmetik.

  • Kami akan mengulangi langkah 2-4 untuk semua perkataan dalam rentetan yang diberikan.

  • Jika semua perkataan boleh disusun semula untuk membentuk urutan aritmetik, maka kita kembali benar. Jika tidak, pulangkan palsu.

Contoh

Mari kita laksanakan kaedah di atas dalam C++ -

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

bool canFormAP(string s) {
   vector<string> words;
   string word = "";
   for(char c : s) {
      if(c == ' ') {
         words.push_back(word);
         word = "";
      } else {
         word += c;
      }
   }
   words.push_back(word);
   for(string w : words) {
      sort(w.begin(), w.end());
      int n = w.length();
      if(n <= 2) {
         continue;
      }
      int d = w[1] - w[0];
      for(int i = 2; i < n; i++) {
         if(w[i] - w[i-1] != d) {
            return false;
         }
      }
   }
   return true;
}

int main() {
   string s = "tutorialspoint";
   if(canFormAP(s)) {
      cout << "Characters of each word can be rearranged to form an Arithmetic Progression\n";
   } else {
      cout << "Characters of each word cannot be rearranged to form an Arithmetic Progression\n";
   }
   return 0;
}

Output

Characters of each word cannot be rearranged to form an Arithmetic Progression

Dalam kod di atas, fungsi canFormAP menerima rentetan s sebagai input dan mengembalikan benar jika aksara setiap perkataan dalam rentetan itu boleh disusun semula untuk membentuk urutan aritmetik. Fungsi utama memanggil fungsi canFormAP, mengambil rentetan "hello world" sebagai input, dan mencetak mesej yang sepadan berdasarkan nilai pulangan fungsi.

Contoh kes ujian

Mari kita pertimbangkan contoh kes ujian untuk memahami cara kod di atas berfungsi -

string s = "the quick brown fox jumps over the lazy dog";

Dalam contoh ini, rentetan yang diberikan ialah "musang coklat yang cepat melompat ke atas anjing yang malas". Setiap perkataan dalam rentetan boleh disusun semula untuk membentuk urutan aritmetik. Sebagai contoh, perkataan "cepat" boleh disusun semula ke dalam urutan aritmetik "cikqu" dengan toleransi 2. Seperti yang kita bincangkan, perkataan "malas" boleh disusun semula ke dalam urutan aritmetik "alzy" dengan toleransi 11.

Jadi, dalam contoh ini, aksara bagi setiap perkataan dalam rentetan yang diberikan boleh disusun semula untuk membentuk jujukan aritmetik dan output kod itu ialah "Watak boleh disusun semula untuk membentuk jujukan aritmetik."

KESIMPULAN

Dalam artikel ini, kami membincangkan cara menyemak sama ada aksara setiap perkataan dalam rentetan tertentu boleh disusun semula untuk membentuk jujukan aritmetik (AP). Kami menggunakan pendekatan mudah untuk mengisih aksara setiap perkataan dan menyemak sama ada toleransi antara pasangan aksara yang bersebelahan adalah sama. Kami juga menyediakan contoh pelaksanaan penyelesaian dalam C++ dan menerangkannya dengan contoh kes ujian.

Soalan ini boleh mempunyai pelbagai aplikasi praktikal. Contohnya, dalam kriptografi, penyusunan semula aksara rentetan boleh digunakan untuk menyulitkan mesej asal, dan menyemak sama ada aksara itu boleh disusun semula untuk membentuk jujukan aritmetik boleh digunakan sebagai langkah pengesahan dalam proses penyahsulitan.

Atas ialah kandungan terperinci Semak sama ada aksara setiap perkataan boleh disusun semula untuk membentuk jujukan aritmetik (AP). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam