演算法小記·字串翻轉
寫一個函式,實現翻轉字串的功能,並考慮時間複雜度、空間複雜度,使其儘可能最小
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;
}
相關文章
- (字串)句子翻轉字串
- 談談字串翻轉字串
- Ruby小記--字串轉字元陣列字串字元陣列
- python如何翻轉字串?Python字串
- 一串字串的翻轉字串
- [CareerCup] 1.2 Reverse String 翻轉字串字串
- 第五章 字串專題 ---------------- 5.2 題解:巧妙翻轉字串字串
- 字串相關演算法1-字串旋轉字串演算法
- 151.翻轉字串裡的單詞 卡碼網:55.右旋轉字串字串
- KM演算法小記演算法
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- 「翻轉字串」python之leetcode刷題|004字串PythonLeetCode
- 【翻譯】影像到Base64字串轉換字串
- 程式碼隨想錄演算法訓練營第8天 | 字串 344.反轉字串 541. 反轉字串II 卡碼網:54.替換數字 151.翻轉字串裡的單詞 卡碼網:55.右旋轉字串演算法字串
- 演算法數字轉化為字串演算法字串
- 記錄一次laravel 會把空字串轉為 null的小坑Laravel字串Null
- Python 3語法小記(五)字串Python字串
- 模板字串的一些用法小記字串
- 第五章 字串專題 ---------------- 5.8 題解:將字串中按單詞翻轉字串
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- LeetCode-151-翻轉字串裡的單詞LeetCode字串
- js如何實現將字串中的字元順序翻轉JS字串字元
- PHP不使用任何內建函式實現字串翻轉PHP函式字串
- 【演算法學習筆記】篩法(演算法翻譯類)演算法筆記
- ROAM演算法的一段翻譯 (轉)演算法
- KMP字串匹配演算法理解(轉)KMP字串匹配演算法
- 勢函式演算法小記?函式演算法
- SIFT演算法學習小記演算法
- Java演算法面試題(008) 字串反轉Java演算法面試題字串
- 關於日期與字串轉換時出錯的分隔符,小記一下容易忘記字串
- 08天【程式碼隨想錄演算法訓練營34期】第四章 字串part01(● 344.反轉字串 ● 541. 反轉字串II ● 卡碼網:54.替換數字 ● 151.翻轉字串裡的單詞 ● 卡碼網:55.右旋轉字串)演算法字串
- 小程式字串轉成二維碼遇到的坑字串
- 《演算法圖解》讀後小記演算法圖解
- 【LeetCode字串#03】圖解翻轉字串中的單詞,以及對於for使用的說明LeetCode字串圖解
- 程式碼隨想錄演算法訓練營,9月5日 | 151.翻轉字串裡的單詞,卡碼網:55.右旋轉字串,28. 實現 strStr(),459.重複的子字串演算法字串
- 程式碼隨想錄演算法訓練營day09|151.翻轉字串裡的單詞,卡碼網:55.右旋轉字串,28.實現 strStr(),459.重複的子字串演算法字串
- 程式碼隨想錄演算法訓練營第八天| 151.翻轉字串裡的單詞演算法字串
- 90後微商決然轉型,利用快手團購小程式重新創業,收入翻幾翻創業