• 将字符串中的回文数输出


    /*
        给定一个字符串(暂时我还无法确定这个是叫做字符
     串,还是为储存的变量为 char 类型的数组),输出
     所有长度至少为2的回文子串。回文子串即从左往右输
     出和从右往左输出结果是的字符串。
     比如:qweewq都是回文字符串。
    */
    #include<cstdio>
    #include<string.h>
    int main()
    {
     char c[505];
        int n;
        scanf("%s",c);
        n=strlen(c);    
     // strlen()函数作用是统计括号内的字符串中的字符个数。 
        for(int m=2; m<=n; ++m)  
     // 从 m=2 开始,判定含有 m 个字符的回文子串是否存在。 
            for(int i=0; i+m<=n; ++i)
      /*
          循环了 n-m+1 次。
       举例说明:
           假设一个字符串有 5 个字符,且此时是判定此字符串中是否含有
        字符数为 3 的回文子串。则是以 3 为单位,从字符串的首位比较
        到末尾那一组,此时就可以得到比较次数为 3=5-3+1。
        即  n-m+1 次。  
      */ 
            {
                bool flag = 0; 
        // bool类型变量,默认为 false ,且只有 true 和 false 两种。 
        // 此处 flag 赋值为 0 或是 1 都可以,但后面的 flag 需要与前面对应。 
                for(int j=i; j<i+m; ++j) 
       //  循环 m 次。  
                    if(c[j]!=c[i+m-j+i-1])
        // 如果使用等号,则后面的判定无效。   
        /*
          当 m=2 循环2次: 
          当 i=0 时,最开始的一次循环是比较 c[0] 与 c[1], 然后是 c[1] 与 c[0]; 
          当 i=1 时,最开始的一次循环是比较 c[1] 与 c[2], 然后是 c[2] 与 c[1];
          ...........                     c[a] 与 c[a+1],      c[a+1] 与 c[a]; 
          当 m=3 循环3次:
             当 i=0 时,最开始的一次循环是比较 c[0] 与 c[2], 然后是 c[1] 与 c[1];
          ...........                     c[a] 与 c[a+2],    c[a+1] 与 c[a+1];
          ..........
             
                    */
        {                       
                        flag = 1;             
                        break;
                    }
                if(!flag) 
                {
                    for(int j=i; j<i+m; ++j)  
        /*
         此处循环是为了将已经确定下来的回文子串输出,且此回文子
         串中含有 m 个字符。 
                    */ 
        {
          printf("%c",c[j]);
        }  
                    printf("\n");
                }
            }
        return 0;
    }
    /*
         程序输出结果为:
         qwerewqhhddacb
      hh
      dd
      ere
      werew
      qwerewq
      
      --------------------------------
      Process exited after 11.05 seconds with return value 0
      请按任意键继续. . . 
      结论:
         在想要看懂一个陌生程序是,可以先从程序的功能出发,自己思考如果此程序
      是自己写,需要哪些步骤,可以将需要的步骤看成一个个模块,在单独考虑每
      个模块的写法。将自己的与程序对照。另外,当程序中有多个循环控制结构嵌
      套使用时,可以将循环的前几步采取试数的方式写出来,在比较其中的共同点
      寻找每个循环的用处。 
    */ 
    转载请注明出处
  • 相关阅读:
    pandas速成笔记(4)数据图表
    Rust:axum学习笔记(4) 上传文件
    傅里叶级数
    Rust:axum学习笔记(5) 处理静态资源
    Rust:axum学习笔记(2) response
    Rust: 如何用bevy写一个贪吃蛇(下)
    算法练习(20)平滑加权轮询算法
    Rust:axum学习笔记(6) SSE(Server Send Event)服务端推送
    Rust:axum学习笔记(7) websocket
    Rust: 如何用bevy写一个贪吃蛇(上)
  • 原文地址:https://www.cnblogs.com/lnlin/p/6534589.html
Copyright © 2020-2023  润新知