目錄
問題陳述
範例
輸入
輸出
說明
方法 1
演算法
結論
首頁 後端開發 C++ 透過顛倒所有回文單字的出現順序來修改句子

透過顛倒所有回文單字的出現順序來修改句子

Aug 27, 2023 am 10:01 AM
修改 顛倒 回文

透過顛倒所有回文單字的出現順序來修改句子

問題陳述

我們給了一個字串 str,總共包含 N 個字。我們需要找到給定字串中的所有回文單詞,並透過反轉所有回文單字的順序來創建一個新字串。

範例

輸入

str = ‘nayan was gone to navjivan eye hospital’
登入後複製

輸出

‘eye was gone to navjivan nayan hospital’
登入後複製

說明

此字串包含三個回文字:nayan、navjivan 和 eye。我們顛倒了所有三個單字的順序,並保持所有其他單字相同。

輸入

‘Hello, users! How are you?’
登入後複製
登入後複製

輸出

‘Hello, users! How are you?’
登入後複製
登入後複製

說明

它提供相同的輸出,因為字串不包含任何回文單字。

輸入

‘Your eye is beautiful.’
登入後複製
登入後複製

輸出

‘Your eye is beautiful.’
登入後複製
登入後複製

說明

它提供與僅包含單一回文單字的字串相同的輸出。

方法 1

在這種方法中,我們首先將字串拆分為單字。之後,我們將過濾所有回文詞。接下來,我們反轉所有回文詞的順序。

最後,我們遍歷字串,如果當前單字是回文單詞,我們將用另一個回文單字以相反的順序替換它。

演算法

  • 步驟 1 - 透過傳遞一個字串作為傳回結果字串的參數來執行reversePlaindromic()函數。

  • 第 2 步 - 建立 isPalindrome() 函數,用於檢查單字是否為回文。

  • 步驟 2.1 - 將「start」初始化為 0,將「end」初始化為字串長度 – 1。

  • 步驟 2.2 - 使用 while 循環遍歷字串,比較第一個和最後一個字符,比較第二個和倒數第二個字符,依此類推。如果任何字元不匹配,則傳回 false,因為它不是回文字串。

  • 步驟 2.3 - 如果字串是回文,則傳回 true。

  • 第 3 步 - 建立一個向量來儲存字串的單字。另外,定義「temp」變數來儲存該單字。

  • 步驟 4 - 使用 for 迴圈遍歷字串,如果不等於空格 (‘ ’),則將字元附加到臨時值。否則,將 temp 的值推送到 allWords 向量。

  • 步驟 5 - 迭代 allWords 向量並使用 isPalindrome() 函數檢查目前單字是否為回文。如果是,則將該單字推入「palindromWords」向量。

  • 第 6 步 - 反轉「palindromWords」清單。

  • 第 7 步 - 現在,再次迭代「allWords」向量,並檢查目前單字是否是回文。如果是,請將其替換為「palindromWords」清單中受尊重的單字。

  • 第 8 步 - 迭代「palindromWords」列表,並透過將所有單字附加到結果變數來建立一個字串。傳回結果字串。

範例

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// Function to check if a string is a palindrome
bool isPalindrome(string str){
   int start = 0;
   int end = str.length() - 1;
   // iterate till start < end
   while (start < end){
      // check if the character at the start and end are not the same and return false, else increment start and decrement end
      if (str[start] != str[end]){
         return false;
      } else {
         start++;
         end--;
      }
   }
   return true;
}
string reversePalindromic(string str) {
   // vectors to store all words and palindromic words
   vector<string> palindromWords;
   vector<string> allWords;
   // variable to store single word
   string temp = "";
   for (char x : str) {
      // If the current character is not space, then append it to temp; else, add temp to palindrome words and make temp NULL
      if (x != ' ') {
         temp += x;
      } else {
         allWords.push_back(temp);
         temp = "";
      }
   }
   // push the last word to all words
   allWords.push_back(temp);
   // fetch all palindromic words
   for (string x : allWords){
      if (isPalindrome(x)){
         // Update newlist
         palindromWords.push_back(x);
      }
   }
   // Reverse the vector
   reverse(palindromWords.begin(), palindromWords.end());
   int k = 0;
   for (int i = 0; i < allWords.size(); i++){
      // If the current word is a palindrome, push it to palindrome words
      if (isPalindrome(allWords[i])){
         allWords[i] = palindromWords[k];
         k++;
      }
   }
   string result = "";
   for (string x : allWords) {
      result += x;
      result += " ";
   }
   return result;
}
int main(){
   string str = "nayan was gone to navjivan eye hospital";
   string reverse = reversePalindromic(str);
   cout << reverse << endl;
   return 0;
}
登入後複製

輸出

eye was gone to navjivan nayan hospital
登入後複製
  • 時間複雜度 - O(N),因為我們迭代長度為 N 的字串。

  • 空間複雜度 - O(K),因為我們使用列表來儲存單字,其中 k 是字串中的單字總數。

結論

我們學會了從句子中獲取所有回文單字並以相反的順序添加它們。在上面的程式碼中,程式設計師可以嘗試更改 isPalindrome() 函數的實作來學習新的東西。

以上是透過顛倒所有回文單字的出現順序來修改句子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 Mar 29, 2024 pm 08:41 PM

1.首先打開釘釘。 2.打開群組聊,點選右上角的三個點。 3.找到我在本群的暱稱。 4.點選進入即可修改儲存。

如何更改使用者資料夾名稱:Win11教學 如何更改使用者資料夾名稱:Win11教學 Jan 09, 2024 am 10:34 AM

有些遊戲會自動安裝到使用者資料夾中,而且需要英文資料夾才可以,不過很多朋友不知道win11怎麼修改使用者資料夾名稱,其實我們只要修改使用者名稱就可以了。 win11修改使用者資料夾名稱:第一步,按下鍵盤「Win+R」組合鍵。第二步,在其中輸入「gpedit.msc」回車開啟群組原則編輯器。第三步,展開「windows設定」下的「安全設定「第四步,開啟「本機原則」中的「安全性選項」第五步,雙擊開啟右邊的「帳號:重新命名系統管理員帳號」原則。第六步,在下方輸入想要修改的資料夾名稱再點選「確定」儲存即可。修改使用者資料夾

抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? 抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? Mar 22, 2024 pm 12:51 PM

抖音藍V認證是企業或品牌在抖音平台上的官方認證,有助於提升品牌形象和可信度。隨著企業發展策略的調整或品牌形象的更新,企業可能希望更改抖音藍V認證的名字。那麼,抖音藍V可以改名字嗎?答案是可以的。本文將詳細介紹企業抖音藍V號名稱修改的步驟。一、抖音藍V可以改名字嗎?抖音藍V帳號是可以改名字的。根據抖音官方規定,企業藍V認證帳號在滿足一定條件後,可以申請修改帳號名稱。一般來說,企業需要提供相關的證明資料,如營業執照、組織機構代碼證等,以證明修改名稱的合法性和必要性。二、企業抖音藍V號名稱修改步驟有哪

修改win11視窗邊角為圓角的指南 修改win11視窗邊角為圓角的指南 Dec 31, 2023 pm 08:35 PM

很多朋友更新好win11系統後,發現win11的介面視窗採用了全新的圓角設計。但是有些人覺得不喜歡這個圓角設計,想要將它修改為曾經的介面,但卻不知道怎麼修改,下面就一起來看看吧。 win11怎麼修改圓角1、win11的圓角設計時內建的系統設置,目前無法修改。 2.所以大家如果不喜歡使用win11的圓角設計的話,可以等微軟提供修改的方法。 3.如果實在使用起來不習慣,還可以選擇退回曾經的win10系統。 4.如果大家不知道如何回退的話,可以查看本站提供的教學。 5.如果使用上方教學無法回退的話,還可

win11電源模式修改位置與方法 win11電源模式修改位置與方法 Dec 30, 2023 pm 05:25 PM

我們在win11系統中,可以透過修改電源模式的方法,來降低我們的電池消耗,或是提高我們的系統效能。設定方法非常簡單,只要找到電源選項就可以了,下面就跟著小編一起來看一下具體的操作流程吧。 win11在哪裡修改電源模式1、先點選工作列最左邊的按鈕,開啟開始功能表。 2、然後在開始功能表上方搜尋並開啟「控制面板」3、在控制面板中,可以找到「硬體和聲音」4、進入硬體和聲音,點擊電源選項下的「選擇電源計畫」5、然後在其中就可以修改電源模式了,可以選擇平衡、節能模式或展開隱藏附加計劃,選擇高性能模式。

PyCharm背景色彩調整技巧:快速掌握! PyCharm背景色彩調整技巧:快速掌握! Feb 03, 2024 am 09:39 AM

快速掌握PyCharm背景顏色的修改技巧,需要具體程式碼範例近年來,Python語言在程式開發領域愈發流行,而PyCharm作為一款整合開發環境(IDE),被廣大開發者所喜愛和使用。在PyCharm中,經常會有一些開發者對IDE的介面進行個人化定制,包括背景顏色的修改。本文將介紹PyCharm背景顏色修改的技巧,並給出具體的程式碼範例,幫助讀者快速掌握這項技能。

如何變更Windows 10工作列的顏色 如何變更Windows 10工作列的顏色 Jan 01, 2024 pm 09:05 PM

win10工作列顏色修改起來非常簡單,但是很多用戶發現設定不了,其實非常的簡單,只要在電腦的個人化裡選擇自己喜愛的顏色就可以了,要是改變不了顏色的注意詳細的設定哦。 win10工作列顏色怎麼改第一步:右鍵桌面-點選個人化第二步:顏色區域自訂第三步:選擇喜歡的顏色PS:如果你無法改變顏色,可以點選顏色->選擇顏色->自訂->預設windows模式,選擇深色即可。

加速pip來源,解決下載速度緩慢的難題 加速pip來源,解決下載速度緩慢的難題 Jan 17, 2024 am 10:18 AM

快速修改pip來源,解決下載速度慢的問題,需要具體程式碼範例導語:在使用Python開發過程中,我們經常需要使用pip來安裝各種第三方函式庫。然而,由於網路環境的限製或預設來源的問題,很多時候pip的下載速度會非常慢,這給我們的開發帶來了不便。因此,本文將介紹如何快速修改pip來源,以解決下載速度慢的問題,並提供具體的程式碼範例。一、問題分析在使用pip下載第三方函式庫時,我

See all articles