删除字符串中数字与反转字符串算法

题目描述:

题目描述
根据主函数和头文件提示,编写两个子函数void removeDigits(char *s);和void reverseStr(char *s);,其功能分别为:删除字符串s中的数字字符;将字符串 s 逆序。其中,当s的长度为0时,void reverseStr(char *s);需要在s中保存表示"NoCharacters"的字符串。

输入格式
输入一个长度不超过100的字符串 s。

输出格式
先移除字符串s中的所有数字符号,再输出处理后的字符串的逆序。

输入样例1
11A2b3C45
​
输出样例1
CbA
​
输入样例2
AAbbccDD
​
输出样例2
DDccbbAA
​
输入样例3
1234567
​
输出样例3
NoCharacters
​
说明:输入的字符串全是数字字符,移除数字字符后字符串长度为0,此时void  reverseStr(char *s);需要在s中保存表示"NoCharacters"的字符串。

算法:

思路:

移除字符串中的数字,可以使用ctype.h头文件中的isdigit函数来判断数字,并用双指针来逐渐覆盖原字符串,要注意的是,覆盖完后要在字符串末尾加上'\0'结束符

反转字符串遍历进行字符交换即可,同时注意0的情况

代码实现:
# include<stdio.h>
# include<stdlib.h>
# include<string.h>
# include<ctype.h>

void swap(char *a,char *b){
    char ch=*a;
    *a=*b;
    *b=ch;
}

void removeDigits(char *s){
    int len=strlen(s);
    int i,j;
    for(i=0,j=0;i<len;i++){
        //判断数字
        //双指针
        if(!isdigit(s[i])) s[j++]=s[i];
    }
    s[j]='\0';//结束符号
}

void reverseStr(char *s){
    int len=strlen(s);
    int index=len-1;
    //无字符情况
    if(len==0){
        //memset(s,0,sizeof(s));
        strcpy(s,"NoCharacters");
        return;
    }
    //交换前后字符
    for(int i=0;i<index;i++){
        // ch=s[i];
        // s[i]=s[index];
        // s[index]=ch;
        swap(&s[i],&s[index--]);
        //index--;
    }
    
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 17:12:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 17:12:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 17:12:05       82 阅读
  4. Python语言-面向对象

    2023-12-09 17:12:05       91 阅读

热门阅读

  1. httpd和dns

    2023-12-09 17:12:05       54 阅读
  2. 四、C#笔记

    2023-12-09 17:12:05       51 阅读
  3. 【自学篇】Python篇-第一天温度转换

    2023-12-09 17:12:05       55 阅读