58 翻轉字串

2022-08-05 02:36:20 字數 1516 閱讀 2761

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

測試序列:

1)功能測試(句子中有多個單詞、只有乙個單詞)

2)特殊輸入測試(空字串、字串中只有空格、)

解題思路:

通過兩次翻轉字串(不占用額外的空間)

1)反轉句子中所有字元 如"hello world!"  反轉後是"!dlrow olleh"

2)再反轉每個單詞中的字元的順序 翻轉後"world! hello"

class solution else if(str[pback] ==' ' || pback ==size)else

}return str;

}void reversestr(int pf, int pb,string &str)

14 pback--;

15//

翻轉整個字串

16reversestr(pfront, pback);

1718

//反轉每個單詞

19while(*pfront != "\0"

)else

if(*pback =="

" || *pback =="\0"

)else30}

3132

return

str;

333435}

3637

void reversestr(string *pf, string *pb)

52return;53

}54 };

error

組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!

測試序列:

1)功能測試(把長度為n的字串左旋轉0個、1個、2個、n-1個、n個、n+1個字元)

2)特殊輸入測試(字串為空串----如果是char*輸入,也要考慮字串指標為空指標,和指標指向空字串)

解題思路:

參照題目一的思路:

對字串"abcdefgh"左翻轉3位,結果是"defghabc"

1)將字串分成兩個部分,分別是要左移的三位,與剩下的幾位。即"abc" "defgh"

對兩部分分別翻**"cbahgfed"

2)然後對得到的字串翻轉

"defghabc"

class solution 

void reversestr(int pf, int pb, string& str)

return;

}};

字串 58題 翻轉單詞順序

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i 示例1 輸入 the sky is blue 輸出 blue is sky the 示例2 輸入 hello wo...

劍指offer58 翻轉字串

題目1 翻轉單詞順序 劍指offer58 翻轉字串 題目1 翻轉單詞順序 方法1 呼叫python內部split函式和切片 def reversesentence s str s.split return join str 1 s i am a student.reversesentence s 方...

劍指 Offer 58 翻轉字串

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i 示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello ...