2015-10-08 165 views
-5

反轉句子中的每一個字,我有如下句子使用C++需要代碼優化我的代碼片段

"Where are you going" 

我希望每個詞應該在一個句子裏得到扭轉像圖所示

"erehW era uoy gniog" 

提前致謝。

 #include "stdafx.h" 
      #include "conio.h" 
      #include <string.h> 
      #include <iostream> 
      using namespace std; 

//反轉功能

   void reverse(char* sentence) 
      { 
       int hold, index = 0; 

//這裏我們呼籲while循環

   while (index >= 0) 
       { 

//通過句子,直到空終止

    while (sentence[index] != ' ') 
        { 
         if(sentence[index] == '\0') 
          break; 
         index++; 
        }    
      hold = index + 1; 
       index--; 

        /* 
    In your original code, 
    This while loop(below) will continue to keep decrementing index 
    even below `0`,You wont exit this while loop until you encounter a ` `. 
    For the 1st word of the sentence you will never come out of the loop. 
    Hence the check, index>=0 
    */ 

        while (index >= 0 && sentence[index] != ' ') 
        { 
         cout << sentence[index]; 
         index--; 
        } 
        cout<<" "; 
        index = hold; 
        if(sentence[hold-1] == '\0') 
        { 
         index = -1; 
        } 
       } 
      } 
//main function 

      int main() 
      { 

       char* sentence = new char[256]; 
       cin.getline(sentence, 256); 
       reverse(sentence); 
       delete[] sentence; // Delete the allocated memory 
      } 
+1

請修復您的代碼格式,此問題目前接近無法讀取。 – shuttle87

+0

@prakash你爲什麼認爲你需要優化? – LogicStuff

+0

我正在使用這麼多循環。它殺死了性能。 – prakash

回答

0

環對於這樣的任務來說,處理器本質上保證了I/O限制,幾乎不管你自己進行反轉的速度有多慢(在這種情況下,從主存儲器讀取/寫入計數爲I/O)。

因此,主要優化是保持代碼儘可能簡單和可讀。考慮到這一點,我會像這樣的東西開始:剖析代碼

std::string reverse_words(std::string const &input) { 
    std::istringstream buffer(input); 
    std::ostringstream result; 

    std::transform(std::istream_iterator<std::string>(buffer), 
     std::istream_iterator<std::string>(), 
     std::ostream_iterator<std::string>(result, " "), 
     [](std::string const &in) { return std::string(in.rbegin(), in.rend()); }); 
    return result.str(); 
} 

如果(且僅當)給我,這是一個瓶頸,我會擔心這種改變別的東西「更高效」 。