1. 程式人生 > 其它 >leecode每日刷題3

leecode每日刷題3

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;
}