演算法小記·字串翻轉
寫一個函式,實現翻轉字串的功能,並考慮時間複雜度、空間複雜度,使其儘可能最小
1. 字串翻轉:請把”I am a student.”,翻轉成”.tneduts a ma I”;
吾來打個樣:
#include <stdio.h>
void reverseCharArray(char *str, char *begin, char *end) {
while(begin < end) { //取地址,交換兩個字元
char temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
}
char *reverse_str(char *str) {
if(NULL == str) { //字串為空直接返回;
return str;
}
char *begin;
char *end;
begin = end = str;
while(*end != ` `) { //end指向字串的末尾;
end++;
}
--end; //取出最後一個`.`字元;
//取字元陣列下標,進行交換;
reverseCharArray(str, begin, end);
return str; //返回結果;
}
int main(int argc, const char * argv[]) {
char str[] = "I am a student.";
printf("%s
", reverse_str(str));
return 0;
}
2. 字串翻轉:請把 “I am a student.”,翻轉成 “I ma a .tneduts”;
吾來打個樣:
#include <stdio.h>
void reverseCharArray(char *str, char *begin, char *end) {
while(begin < end) { //取地址,交換兩個字元
char temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
}
char *reverseChar(char *str) {
char *begin;
char *end;
begin = end = str;
while (*end != ` `) {
if (*end == ` `) {
reverseCharArray(str, begin, end - 1);
begin = end + 1;
}
else if (*(end + 1) == ` `) { //當*(end + 1)取出的是字串陣列最後的` `的時候
reverseCharArray(str, begin, end);
}
end++;
}
return str;
}
int main(int argc, const char * argv[]) {
char str[] = "I am a student.";
printf("%s
", reverseChar(str));
return 0;
}
3. 字串翻轉:請把 “I am a student.”,翻轉為 “student. a am i”;
吾來打個樣:
#include <stdio.h>
void reverseCharArray(char *str, char *begin, char *end) {
while(begin < end) { //取地址,交換兩個字元
char temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
}
char *reverseChar(char *str) {
char *begin;
char *end;
begin = end = str;
while (*end != ` `) {
if (*end == ` `) {
reverseCharArray(str, begin, end - 1);
begin = end + 1;
}
else if (*(end + 1) == ` `) { //當*(end + 1)取出的是字串陣列最後的` `的時候
reverseCharArray(str, begin, end);
}
end++;
}
return str;
}
int main(int argc, const char * argv[]) {
char str[] = "I am a student.";
char *begin;
char *end;
begin = end = str;
while(*end != ` `) { //end指向字串的末尾;
end++;
}
--end; //取出最後一個`.`字元;
reverseCharArray(str, begin, end);
printf("%s
", reverseChar(str));
return 0;
}
相關文章
- 談談字串翻轉字串
- python如何翻轉字串?Python字串
- 一串字串的翻轉字串
- 「翻轉字串」python之leetcode刷題|004字串PythonLeetCode
- 151.翻轉字串裡的單詞 卡碼網:55.右旋轉字串字串
- 第五章 字串專題 ---------------- 5.2 題解:巧妙翻轉字串字串
- LeetCode-151-翻轉字串裡的單詞LeetCode字串
- 程式碼隨想錄演算法訓練營第8天 | 字串 344.反轉字串 541. 反轉字串II 卡碼網:54.替換數字 151.翻轉字串裡的單詞 卡碼網:55.右旋轉字串演算法字串
- 【翻譯】影像到Base64字串轉換字串
- 記錄一次laravel 會把空字串轉為 null的小坑Laravel字串Null
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- 2021-01-04 | 151. 翻轉字串裡的單詞字串
- 第五章 字串專題 ---------------- 5.8 題解:將字串中按單詞翻轉字串
- 【LeetCode字串#03】圖解翻轉字串中的單詞,以及對於for使用的說明LeetCode字串圖解
- KM演算法小記演算法
- 08天【程式碼隨想錄演算法訓練營34期】第四章 字串part01(● 344.反轉字串 ● 541. 反轉字串II ● 卡碼網:54.替換數字 ● 151.翻轉字串裡的單詞 ● 卡碼網:55.右旋轉字串)演算法字串
- 程式碼隨想錄演算法訓練營day09|151.翻轉字串裡的單詞,卡碼網:55.右旋轉字串,28.實現 strStr(),459.重複的子字串演算法字串
- 模板字串的一些用法小記字串
- 【刷題日記】leetcode-493 翻轉對LeetCode
- 【演算法學習筆記】篩法(演算法翻譯類)演算法筆記
- 程式碼隨想錄演算法訓練營第八天| 151.翻轉字串裡的單詞演算法字串
- JAVA字串轉日期或日期轉字串Java字串
- JS json字串轉物件、物件轉字串JSON字串物件
- 小程式字串轉成二維碼遇到的坑字串
- 程式碼隨想錄演算法訓練營,9月5日 | 151.翻轉字串裡的單詞,卡碼網:55.右旋轉字串,28. 實現 strStr(),459.重複的子字串演算法字串
- xml字串轉JSON字串XML字串JSON
- 勢函式演算法小記?函式演算法
- iOS訊息轉發小記iOS
- 翻轉整數
- 旋轉字串字串
- js中將小/大駝峰格式的字串轉為下劃線相連的字串JS字串
- 90後微商決然轉型,利用快手團購小程式重新創業,收入翻幾翻創業
- JS字串轉換為JSON的四種方法筆記字串JSON筆記
- 程式碼隨想錄演算法訓練營第八天 | 字串:344反轉字串、演算法字串
- 字串演算法字串演算法
- textview - 翻轉動畫TextView動畫
- 翻轉int陣列陣列
- JavaScript 字串反轉JavaScript字串