[英]Swap two words in a char* using constant space in less than o(n^2) time
給一個字符串的 char*,比如說包含“hellosir”,以及每個單詞的長度,如何在小於 o(n^2) 的時間內使用常量空間返回一個包含“sirhello”的 char* ? (我在技術面試中被問到這個問題)
函數簽名:
char* swapWords(char* str, int firstWordLen, int secondWordLen);
在“hellosir”示例中,firstWordLen 為 5,secondWordLen 為 3。
謝謝
char* swapWords(char* str, int firstWordLen, int secondWordLen) {
char* newStr = (char*) malloc(sizeof(char) * (firstWordLen + secondWordLen + 1));
for(int i = 0; i < secondWordLen; i++) {
newStr[i] = str[firstWordLen + i];
}
for(int i = 0; i < firstWordLen; i++) {
newStr[secondWordLen + i] = str[i];
}
newStr[firstWordLen + secondWordLen] = 0;
return newStr;
}
解釋:
啊好吧,這不是常數空間我不好,速度是O(n),但空間也是O(n)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.