- #include <stdio.h>
- #include <string.h>
- //题目以及要求:把一个字符串的大写字母放到字符串的后面,
- //各个字符的相对位置不变,不能申请额外的空间。
- //判断是不是大写字母
- int isUpperAlpha(char c){
- if(c >= 'A' && c <= 'Z'){
- return 1;
- }
- return 0;
- }
- //交换两个字母
- void swap(char *a, char *b){
- char temp = *a;
- *a = *b;
- *b = temp;
- }
- char * mySort(char *arr, int len){
- if(arr == NULL || len <= 0){
- return NULL;
- }
- int i = 0, j = 0, k = 0;
- for(i = 0; i < len; i++){
- for(j = len - 1 - i; j >= 0; j--){ //比较len-1-i次,也就是比较当前位置后面的次数
- if(isUpperAlpha(arr[j])){
- for(k = j; k < len - i - 1; k++){
- swap(&arr[k], &arr[k + 1]);
- }
- break;
- }
- //遍历完了字符数组,但是没发现大写字母,所以没必要再遍历下去
- if(j == 0 && !isUpperAlpha(arr[j])){
- //结束;
- return arr;
- }
- }
- }
- //over:
- return arr;
- }
- int main(){
- char arr[] = "aaaaaaaaaaaaaaaaaaaaaaaAbcAdeBbDc";
- printf("%s\n", mySort(arr, strlen(arr)));
- return 0;
- }
把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。
最新推荐文章于 2023-06-16 15:44:13 发布
本文介绍了一种不使用额外空间将字符串中大写字母移动到末尾的算法实现,通过自定义函数进行大小写判断及字符交换,最终达到保持其他字符相对位置不变的要求。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Anything-LLM
AI应用
AnythingLLM是一个全栈应用程序,可以使用商用或开源的LLM/嵌入器/语义向量数据库模型,帮助用户在本地或云端搭建个性化的聊天机器人系统,且无需复杂设置
2695

被折叠的 条评论
为什么被折叠?



