leecode每日刷題3
阿新 • • 發佈:2022-03-01
leecode每日刷題3
leecode每日刷題3
題目描述 反轉字串
編寫一個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 s 的形式給出。 不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 O(1) 的額外空間解決這一問題。 示例 1: 輸入:s = ["h","e","l","l","o"] 輸出:["o","l","l","e","h"] 示例 2: 輸入:s = ["H","a","n","n","a","h"] 輸出:["h","a","n","n","a","H"] 提示: 1 <= s.length <= 105 s[i] 都是 ASCII 碼錶中的可列印字元 來源:力扣(LeetCode) 連結:https://leetcode-cn.com/problems/reverse-string 著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題程式碼
void swap(char *a,char *b){
char tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void reverseString(char* s, int sSize){
int left = 0 ,right = sSize - 1;
while(left < right){
swap(s+left,s+right);
left++;
right--;
}
return s;
}
題目描述 反轉字串中的單詞 III
給定一個字串s,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。 示例 1: 輸入:s = "Let's take LeetCode contest" 輸出:"s'teL ekat edoCteeL tsetnoc" 示例 2: 輸入: s = "God Ding" 輸出:"doG gniD" 提示: 1 <= s.length <= 5 * 104 s包含可列印的 ASCII 字元。 s不包含任何開頭或結尾空格。 s裡 至少 有一個詞。 s中的所有單詞都用一個空格隔開。 來源:力扣(LeetCode) 連結:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii 著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題程式碼
void swap(char *a,char *b){ char tmp; tmp = *a; *a = *b; *b = tmp; } char *reverseString(char *s, int sSize){ int left = 0, right = sSize - 1; while(left < right){ swap(s+left,s+right); left++; right--; } return s; } char * reverseWords(char * s){ int i = 0; int count = 0; while(s[i]){ if(s[i]!=' '){ count++; } else{ reverseString(s+i-count,count); count = 0; } if(i == strlen(s)-1){ reverseString(s+i-count+1,count); } i++; } return s; }