谷歌:有一個由大小寫組成的字串,將其中的所有小寫字母排在大寫字母的前面
阿新 • • 發佈:2019-01-28
有一個由大小寫組成的字串,現在需要對他進行修改,將其中的所有小寫字母排在答謝字母的前面(大寫或小寫字母之間不要求保持原來次序),如有可能儘量選擇時間和空間效率高的演算法 c語言函式原型void proc(char *str) 也可以採用你自己熟悉的語言
#include<stdio.h> #include<string.h> void swap( char *a, char *b) { char temp=*a; *a=*b; *b=temp; } //因為對修改後的字母原來的順序不要求,所以相對來說還是比較簡單的 void proc( char *str ) { int start=0; int end=strlen(str)-1; for( ; start<end; ) { //從開始找到第一個大寫字母 while( 'a'<=*(str+start) && *(str+start)<='z' && start<end) { start++; } //從尾巴開始找到第一個小寫字母 while( 'A'<=*(str+end) && *(str+end)<='Z' && start<end) { end--; } //交換 if(start<end) { swap( str+start, str+end); ++start; --end; } } } int main() { char str[]="aAWGafgc"; proc(str); printf("%s \n",str); getchar(); return 0; }