牛客最近來了乙個新員工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 solutionvoid 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 ...