把一個字符串的大寫字母放到字符串的後面,各個字符的相對位置不變,不能申請額外的空間

例如AbcDeFGhi ->bceiADFG

這道題目是今年騰訊的面試題,我的想法是基於冒泡的思想,從頭開始掃描,遇到小寫字母就往前面冒

初始:AbcDeFGhi

冒'b': bAcDeFGhi

冒'c': bcADeFGhi

冒'e': bceADFGhi

冒'h': bcehADFGi

冒'i':  bcehiADFG

得到最終結果爲bceiADFG

最終代碼如下

#include <stdio.h>
#include <string.h>
int main() {
  char s[1000], t;
  int i, j;
  while (scanf("%s", s) != EOF) {
    for (i = 1; i < strlen(s); ++i) {
      j = i;
      if ('a' <= s[i] && s[i] <= 'z')
        while (j != 0 && 'A' <= s[j-1] && s[j-1] <= 'Z') {
          t = s[j-1];
          s[j-1] = s[j];
          s[j--] = t;
        }
    }
    printf("%s\n", s);
  }
  return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章