• 【力扣】第2710题——移除字符串的尾随零


    题目:

    给你一个用字符串表示的正整数 num ,请你以字符串形式返回不含尾随零的整数 num

    示例 1:

    输入:num = "51230100"
    输出:"512301"
    解释:整数 "51230100" 有 2 个尾随零,移除并返回整数 "512301" 。

    示例 2:

    输入:num = "123"
    输出:"123"
    解释:整数 "123" 不含尾随零,返回整数 "123" 。
    

    提示:

    • 1 <= num.length <= 1000

    • num 仅由数字 09 组成

    • num 不含前导零

    没有脑子的我拿到了这个题目,看了看,感觉不难,其实就是不难,无脑打开VS

    产生的第一个问题是字符串输入,怎样让他以字符串输出,数字的话可以用除,字符串咋办,于是想到用数组解决,写了一串去求解这个字符串的长度,(全篇没有想到用strlen函数)之后就产生了复杂的想法(遍历循环判断将数字符串后面的零全部换成'\0',这样输出的字符串后面就没有0了,于是在我暴力求解下,这个解题答案出来了。

    能抓到老鼠的猫就是好猫,,,sos

    下面是我用VS写出的

    1. #include<stdio.h>
    2. int main()
    3. {
    4.   char num[1000] ;  
    5.   printf("请输入一个用字符串表示的正整数 num:") ;
    6.   scanf("%s",&num);
    7.   int lenth=0;
    8.   int temp=lenth-2;
    9.   for(int i=0;i<=1000;i++)
    10.   {
    11.       lenth++;
    12.       if(num[i]=='\0')
    13.       {
    14.           printf("len=%d\n",lenth-1);
    15.           break;
    16.       }
    17.   }
    18.   for(int j=lenth-2;j>0;j--)
    19.   {
    20.       if(num[j]=='0')
    21.       {
    22.           temp--;
    23.       }
    24.       else if(num[j]!='0')
    25.       {
    26.           break;
    27.       }
    28.   }
    29.   for(int i=temp+1;i<lenth-1;i++)
    30.   {
    31.       num[i]='\0';
    32.   }
    33.   printf("%s\n",num);
    34.   return 0;
    35. }

    打开力扣提交下面代码

    1. char * removeTrailingZeros(char * num){
    2.    
    3.   int lenth=0;
    4.   for(int i=0;i<=1000;i++)
    5.   {
    6.       lenth++;
    7.       if(num[i]=='\0')
    8.       {
    9.           printf("len=%d\n",lenth);
    10.           break;
    11.       }
    12.   }
    13.   int temp=lenth-2; // 字符串数字长度
    14.   for(int j=lenth-2;j>0;j--)
    15.   {
    16.       if(num[j]=='0')
    17.       {
    18.           temp--;
    19.       }
    20.       else if(num[j]!='0')
    21.       {
    22.           break;
    23.       }
    24.   }
    25.   for(int i=temp+1;i<lenth-1;i++)
    26.   {
    27.       num[i]='\0';
    28.   }
    29.   return num;
    30.   return 0;
    31. }

    提交结束看见官方发的C代码我是个小丑,,,

    不过也是一种成长

    于是根据我成长后的理解更改了代码,我个人喜欢用for循环加if判断哈!个人觉得比较好理解。官方给的是while。语句更简单。

    1. #include
    2. #include
    3. int main()
    4. {
    5.   char num[1000] ;  
    6.   printf("请输入一个用字符串表示的正整数 num:") ;
    7.   scanf("%s",&num);
    8.   int lenth=strlen(num);
    9.   printf("%d\n",lenth);
    10.   for(int i=lenth-1; i > 0; i--)
    11.   {
    12.       if(num[i]=='0')
    13.       {
    14.           num[i]='\0';
    15.       }
    16.       else
    17.       {
    18.           break;
    19.       }
    20.        
    21.   }
    22.   printf("%s\n",num);
    23.   return 0;
    24. }

    VS运行结果:

    完事大吉啦!

    再接再励吧!!!!!!!

    脑袋空空。

    如果有错,请赐教,感谢!

  • 相关阅读:
    37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
    strcpy常见的错误
    罗勇军 →《算法竞赛·快冲300题》每日一题:“游泳” ← DFS+剪枝
    关于python类中的魔法方法
    UniVue更新日志:使用ObservableList优化LoopList/LoopGrid组件的使用
    【云原生】Spring Cloud微服务学习路线汇总
    【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业&课程设计
    CSS技巧:实现两个div在同一行显示的方法
    Unity VR开发教程 OpenXR+XR Interaction Toolkit 2.1.1 (五) UI
    基于Apache Hudi在Google云构建数据湖平台
  • 原文地址:https://blog.csdn.net/m0_65146517/article/details/140063502