目錄
演算法
範例
輸出
結論
首頁 後端開發 C++ 使用O(1)額外空間反轉單字

使用O(1)額外空間反轉單字

Sep 16, 2023 pm 01:33 PM
反轉 單字 o()

使用O(1)額外空間反轉單字

一個字串可能由多個單字組成。 C 字串中的每個單字可以包含字母、數字或特殊符號。字串被認為是這些字元的儲存元素。每個單字由一個空格字元分隔。每個單字也形成一個字元的字串。在C 中,任何字串的反向是遵循以下幾點的字串−

  • 它是透過從末尾向開頭取字元形成的。

  • 原始字串的長度保持不變。

字元在字串中出現的順序可以透過交換單字開頭和結尾的字元來輕鬆地顛倒。

常數輔助空間以O(1)表示,這表示程式在執行過程中不需要額外的空間。

一些說明問題的例子如下:

範例範例

範例1 - str:Abc def

#輸出:cbA fed

解釋:在反轉字串時,字元的情況保持不變。

範例2 - str:嗨spe2

輸出:yeH 23%eps

#問題陳述可以透過提取每個單字並為每個單字維護一對開始和結束指針,然後進行反轉來解決。

演算法

  • 第一步−使用for迴圈次歷提供的輸入字串。

  • 第二步 - 使用變數st捕捉第一個單字的起始字元。

  • 步驟 3 − 一旦遇到第一個空格,lst變數就會固定在前一個字元上,以標記單字的起始和結束字元。

  • 步驟 4 − 使用這兩個指標和一個 while 循環,將該單字的字元反轉。在每次 while 迴圈的迭代中,指標會被移動以窮盡字串。

  • Step 5 − The values are updated to shift the pointers to the next subsequent word and so on. st is reinitialised to the next character after space.

  • 第6步 - 整個字串被迭代,對應的單字被反轉。

範例

以下的C 程式碼片段以一個字串作為輸入,並反轉其中包含的單字 -

// including the required libraries
#include <bits/stdc++.h>
using namespace std;

//reversing current word of string
void reverseWord(string &st, int s, int e){
   while (s < e) {
      swap(st[s], st[e]);
      s++;
      e--;
   }
}

//reverse the words of a string
string reverseString(string str){
   int len = str.length();

   //initialising the pointer with the first letter of the input string
   int st = 0;
   for (int i = 0; i <= len; i++) {

      //stop the pointer at the first word
      //either a space will be found indicating end of word or the string is finished
      char ch = str[i];
      if (ch == ' ' || i == len) {

         //fetching the last character of the current word of the string
         int lst = i - 1;

         // Reverse the current word
         reverseWord(str, st,lst);

         //since the ith character is string , go to i+1 th character to fetch next word
         st = i + 1;
      }
   }
   return str;
}

//calling the method to reverse words
int main(){

   //input string
   string str = "Reverse words Tutorials Point";
   cout<<"original String:"<<str;

   //reversed string
   string revstr = reverseString(str);
   cout << "\nReversed string : "<< revstr;
   return 0;
}
登入後複製

輸出

original String:Reverse words Tutorials Point
Reversed string : esreveR sdrow slairotuT tnioP
登入後複製

空間複雜度

上述方法所需的空間是恆定的,因為沒有對任何類型的變數進行新的初始化。不需要外部空間儲存來交換單字。所有的修改都是在可用的儲存變數中進行的。

結論

字串由字元組成,可以按任意順序排列或透過簡單的迭代反轉。由於演算法對儲存在其中的字元的整個範圍執行單次迭代,所需的總時間為O(n),其中n是字串的長度。

以上是使用O(1)額外空間反轉單字的詳細內容。更多資訊請關注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)

如何在沉浸式閱讀器中使用Microsoft Reader Coach 如何在沉浸式閱讀器中使用Microsoft Reader Coach Mar 09, 2024 am 09:34 AM

在這篇文章中,我們將向你展示如何在WindowsPC上的沉浸式閱讀器中使用Microsoft閱讀教練。閱讀指導功能幫助學生或個人練習閱讀並培養他們的識字技能。你從閱讀支援的應用程式中的一段或一份文件開始,基於此,你的閱讀報告由閱讀教練工具產生。閱讀報告顯示了閱讀的準確性、閱讀所花費的時間、每分鐘的正確單字數,以及你在閱讀時發現最具挑戰性的單字。你還將能夠練習這些單詞,這總體上有助於培養你的閱讀技能。目前,僅有Office或Microsoft365(包括OneNoteforWeb和WordforWe

Windows 11 上如何啟用或停用自動更正拼字錯誤的單字功能 Windows 11 上如何啟用或停用自動更正拼字錯誤的單字功能 Sep 19, 2023 pm 10:53 PM

自動更正是一項非常有用的功能,可以在您的日常生活中節省大量時間。雖然它並不完美,但大多數時候,您可以依靠它來修復您的拼字錯誤和寫作錯誤。但是,有時它不能正常工作。你會發現它無法識別一些單詞,這使得它難以有效地工作。其他時候,您只想停用它並回到舊方式。但是使用自動更正有什麼好處嗎?透過更正拼字錯誤來節省您的時間。透過顯示正確的拼字來幫助您學習新單字。它可以幫助您避免電子郵件和其他文件中的尷尬錯誤。您將能夠更快地打字並減少錯誤。如何在Windows11上開啟或關閉拼字檢查? 1.使用「設定」應用程式點擊鍵

墨墨背單字怎麼重新開始背呢?分享墨墨背單字重新背單字方法! 墨墨背單字怎麼重新開始背呢?分享墨墨背單字重新背單字方法! Mar 15, 2024 pm 03:28 PM

好奇墨墨背單字怎麼重新開始背嗎?墨墨背單字是一款十分好用的英語單字學習軟體,使用者可以根據英語程度和學習意圖選擇英語字庫進行英語學習,還能透過例句和助記等方法更好的理解記憶單字等。有小夥伴背完單字了想重新開始背同樣的字彙書,但不知道該如何操作?小編今天為各位用戶整理了墨墨背單字重新背單字方法!有幫助到你就快來下載吧!一、墨墨背單字怎麼重新開始背呢?分享墨墨背單字重新背單字方法! 1.開啟墨背單字app,在複習頁面中看到簽到功能,選擇當天日期。 2.點選進入,之後會看到查看詳情選項。 3.跳轉頁面後,選擇

百詞斬斬掉的單字在哪?百詞斬斬掉的單字找教學! 百詞斬斬掉的單字在哪?百詞斬斬掉的單字找教學! Mar 15, 2024 pm 03:52 PM

一、百詞斬斬掉的單字在哪?百詞斬斬掉的單字找教學! 1.進入首頁,點選單字清單。 2.跳轉頁面後,選擇已斬單字選項。 3.進入介面後,就可以看到被使用者斬掉的單字了。 4.如果想要恢復已斬的單字,點擊編輯選項。 5.找到需要恢復的單字,點擊右側斬圖標,即可恢復該單字。 6.回到已學單字介面,就可以看到剛恢復的單字了。

如何在iOS 17中利用預測性自動修正功能 如何在iOS 17中利用預測性自動修正功能 Sep 17, 2023 pm 03:37 PM

由於改進的機器學習技術,iOS17中的Apple在iPhone中鍵入文字時使自動更正變得更加有用。蘋果表示,它採用了一種“變形器語言模型”,可以更好地為個人用戶個性化自動更正,學習你的個人偏好和單字選擇,以便在打字時更有用。使用iOS17幾週後,您應該注意到自動更正建議可以更好地預測您想說的內容並顯示單字供您點擊以自動填充。當您使用首字母縮寫、縮短詞、俚語和口語時,自動更正與自動更正不那麼激進,但它仍然能夠更正意外的拼寫錯誤。更正自動更正當自動更正更改單字時,更正的單字下方將顯示一條藍線。您可

如何反轉和倒序 PHP 數組 如何反轉和倒序 PHP 數組 Sep 05, 2023 am 08:28 AM

如何反轉和倒序PHP數組在PHP中,數組是一種常用的資料結構,能夠儲存和操作大量的資料。有時我們需要對數組進行反轉或倒序操作,以滿足特定的需求。本文將介紹如何使用PHP對陣列進行反轉和倒序操作,並給出對應的程式碼範例。一、反轉數組反轉數組是指將數組中的元素按照原來的順序進行相反的重新排列。 PHP提供了多種方法來實現陣列的反轉,以下介紹兩種常用的

使用Python計算字串中單字的長度 使用Python計算字串中單字的長度 Sep 13, 2023 am 11:29 AM

使用Python找出給定輸入字串中各個單字的長度是必須解決的問題。我們想要計算文字輸入中每個單字的字元數,並以結構化樣式(如列表)顯示結果。該任務需要分解輸入字串並分隔每個單字。然後根據其中的字元數計算每個單字的長度。基本目標是創建一個可以有效接收輸入、確定字長並及時輸出結果的函數或流程。在文字處理、自然語言處理和資料分析等多種應用中,字長統計可以提供有洞察力的資訊並實現額外的分析,解決這個問題至關重要。使用的方法使用循環和split()函數將map()函數與len和split()一起使用使

iOS 17承諾顯著改善iPhone的自動更正功能 iOS 17承諾顯著改善iPhone的自動更正功能 Jun 06, 2023 am 08:20 AM

蘋果今天預覽了iPhone的iOS17,更新帶來的關鍵新功能之一是改進的自動更正功能。蘋果表示,iOS17包括一個最先進的單字預測語言模型,這將大大改善iPhone的自動更正。每當您鍵入時,設備上的機器學習都會以比以往更高的準確性智慧地糾正錯誤。此外,您現在將在鍵入時收到內聯的預測文字建議,允許透過點擊空白鍵來新增單字或完整句子。自動更正在iOS17上有一個更新的設計,簡要地強調了自動更正的單字。點擊帶下劃線的單字會顯示您鍵入的原始單詞,輕鬆快速還原變更。隨著時間的推移,該系統還將學習你的打字

See all articles