透過顛倒所有回文單字的出現順序來修改句子
問題陳述
我們給了一個字串 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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