11 条题解

  • 7
    @ 2023-7-15 20:07:40

    解析

    这个题还是比较简单的,课上有哦吼! (所以我只挑简单的题写题解是吗?bushi

    我们要判断这个字符串是否为回文数,也就是说把这个字符串反过来以后两个依然相等

    for循环跑一半i <= n/2 然后s[i ]和s[ n-i+1]去比对就好啦!

    如果不一样就输出no然后return 0 循环结束,也就是比对后一样就直接输出yes就好了

    (满级语文,嘿嘿!)

    疯狂暗示点‘亿’点点赞!哦吼! 第一次写题解!

    (话说有没有人知道苦瓜奶茶是什么味道?好喝嘛?👀️

    小茗der纸张代码

    #include <iostream>
    #include <cstring>
    using namespace std;
    int main()
    {
        char s[114514];//好臭的数字!(划掉)
        cin >> s + 1;
        int n = strlen(s + 1);
        for (int i = 1; i <= n / 2; i++)
        {
            if (s[i] != s[n-i+1])
            {
                cout << "no";
                return 0;
            }
        }
        cout << "yes";
        return 0;
    }
    //课上有一模一样的为什么在这还要做一遍哈(?
    
    • 2
      @ 2023-8-6 8:38:20

      其实这道题的回文很容易。如果长度为奇数,则中间的元素不用考虑,而整数除法可以舍去中点;偶数就不用我说了吧 上代码

      #include <iostream>
      using namespace std;
      int main(){
          string s;
          bool flag=true;
          cin>>s;
          for(int i=0;i<s.length()/2;i++){
              if(s[i]!=s[s.length()-1-i]){
                  flag=false;
                  break;
              }
          }
          flag?cout<<"yes"<<endl:cout<<"no"<<endl;
          return 0;
      }
      
      • 2
        @ 2023-7-19 22:55:36

        作为压缩流,这种情况不用写,不用压缩,直接复制核桃上的答案(题目都是一样的)👀️

        #include <iostream>
        #include <cstring>
        using namespace std;
        int main()
        {
            char s[105];
            cin >> s+1;
            int n = strlen(s+1);
            for (int i = 1; i <= n / 2; i++)
            {
                if (s[i]!=s[n-i+1]) 
                {
                    cout<<"no";
                    return 0;
                }
            }
            cout<<"yes";
            return 0;
        }
        
        • 1
          @ 2023-7-15 15:38:48

          解析

          若当前字符串为s回文字符串,数据保存在1~n中

          那么对于任意一个i,都有s[i]等于s[n - i + 1]

          题解

          #include <iostream>
          #include <cstring>
          using namespace std;
          int main()
          {
              char s[105];
              cin >> s + 1;
              int n = strlen(s + 1);
              for (int i = 1; i <= n / 2; i++)
              {
                  if (s[i] != s[n - i + 1])
                  {
                      cout << "no";
                      return 0;
                  }
              }
              cout << "yes";
              return 0;
          }
          
          • 0
            @ 2024-4-19 20:15:59
            #include<iostream>
            using namespace std;
            int main()
            {
                string a,b;
                cin >> a;
                for(int i=int(a.length())-1;i>=0;i--)
                {
                    b+=a[i];
                }//将字符串倒置
                if (b==a)//判断是否为回文数
                {
                    cout << "yes";
                }
                else
                {
                    cout << "no";
                }
                return 0;
            }
            
            • 0
              @ 2023-11-24 20:56:14
              #include <iostream>
              using namespace std;
              int main()
              {
                  string a;
                  int flag=0;
                  cin >> a;
                  for(int i = 0;i < int(a.length());i++)
                  {
                      if(a[i] != a[a.length() - i-1])
                      {           
                          flag++;
                          break;
                      }
                  }
                  if(flag == 0)
                  {
                      cout << "yes";
                  }
                  else
                  {
                      cout << "no";
                  }
                  return 0;
              }
              
              • 0
                @ 2023-7-20 20:06:15

                12行解决

                #include<iostream>
                using namespace std;
                string q;
                int main()
                {
                    cin>>q;
                    for(int i=0;i<(q.length()+1)/2;i++)if(q[i]!=q[q.length()-1-i])
                            {
                                cout<<"no";
                                return 0;
                            }
                    cout<<"yes";
                    return 0;
                }
                
                • -1
                  @ 2024-6-8 14:04:15
                  #include <iostream>
                  #include <cstring>
                  using namespace std;
                  int main()
                  {
                      char s[1433223];
                      cin >> s + 1;
                      int n = strlen(s + 1);
                      for (int i = 1; i <= n / 2; i++)
                      {
                          if (s[i] != s[n-i+1])
                          {
                              cout << "no";
                              return 0;
                          }
                      }
                      cout << "为什么要抄题解?????????????";
                      return 0;
                  }
                  
                  • -2
                    @ 2023-7-18 1:43:50
                    1. 前言 判断字符串是否回文,是c++,python,java最简单的字符串应用,蓝桥杯不会考,NOI不会考,但是CCF竟然烤,是不是CCF不刑啊
                    2. 分析 emmmmm....其实就是把一个字符串正着判断,反着判断是不是一样的就完事了
                    3. c++代码
                    • 我教大家一步一步的写(顺便整下花活),准备好头盔上车了. 先导入头文件 不建议使用万能头,因为会拖慢时间,有这时间不如多跑几个数据,对吧 `
                    #include <iostream>
                    #include <cstring>
                    #include <cstdio>
                    

                    头这么多,我想使用万能头

                    • 然后搞c++的必须代码 using namespace std;
                    • 定义主函数int main(){}(不会写的,拖出去鸡吡了)
                    • 初始化变量,列表
                    char a[101],b[101]; //看到两个列表是不是慌了,不用怕,正常
                    gets(a);
                    int len=strlen(a);
                    int q=0;
                    
                    • 主函数体就不一 一放出来了
                    for (int i=len-1; i>=0; i--) //遍历数组a 把数反向存入b数组 
                    	{
                    		b[q]=a[i];
                    		q++;
                    	}
                    for(int i=0;i<len;i++) //正向挨个比较数组a b 如有一个不同则不是回文 输出no结束程序  
                    	{
                    		if(a[i]!=b[i]) 
                    		{
                    			cout<<"no";
                    			return 0; 
                    		}
                    	}
                    cout<<"yes";
                    
                    	return 0;
                    

                    不给你,完整代码,除非你求我 错了大哥,我给

                    • 完整代码
                    #include <iostream>
                    #include <cstring>
                    #include <cstdio> 
                    using namespace std;
                    int main()
                    {
                    	char a[101],b[101];
                    	gets(a);
                    	int len=strlen(a);
                    	int q=0;
                    	for (int i=len-1; i>=0; i--) //遍历数组a 把数反向存入b数组 
                    	{
                    		b[q]=a[i];
                    		q++;
                    	}
                    	for(int i=0;i<len;i++) //正向挨个比较数组a b 如有一个不同则不是回文 输出no结束程序  
                    	{
                    		if(a[i]!=b[i]) 
                    		{
                    			cout<<"no";
                    			return 0; 
                    		}
                    	}
                    	cout<<"yes";
                    
                    	return 0;
                    
                    }
                    

                    重头戏来了

                    1. python代码 这边张某给了大家3种方法,效果都一样,放心使用
                    #for循环
                    def is_palindromic2(num):
                        count = 0
                        for i in range(len(num)):
                            count += 1
                            if count < len(num) // 2:
                                if num[i] != num[len(num) - i - 1]:
                                    return False
                            else:
                                break
                        return True
                    #递归
                    def is_palindromic3(num):
                        # 如果字符串只有0个或1个字符,那么该字符串符合回文的定义
                        if len(num) < 2:
                            return True
                        # 如果字符串不止一个字符,那么检查字串符的第一项和最后一项是否等同
                        if num[0] != num[-1]:  
                            return False
                        return is_palindromic3(num[1:-1])
                    #最简单的方法
                    def is_palindromic4(num):
                        return num == num[::-1]
                    n = input()  #输入样例abcdedcba
                    print(is_palindromic2(n))
                    print(is_palindromic3(n))
                    print(is_palindromic4(n))
                    

                    看起来python是不是更简单,错了,学好c++吧,少年,不要怪我没提醒你,CCF更NB class image 感谢阅读,祝你编程愉快

                    • 发布时间:2021-7-18 01:42a.m.
                      • 发布者:张睿涵(Mr.zhang)
                        • 不要转载哦 image
                    • @ 2023-7-18 16:51:48

                      读出博客、脸书的感觉来了

                  • -2
                    @ 2023-7-15 17:08:57

                    提供一种跟课堂上不太一样的方法

                    因为我们要判断这个字符串是不是个回文字符串,也就是说把这个字符串反过来以后两个依然相等,所以我们可以用一个string类型的变量来存储反过来以后的字符串

                    这种解法发关键点在于如何把字符串反过来

                    想要翻转一个字符串,可以先准备一个空的string类型的变量(rs),然后从倒数第一个字符开始遍历,将遍历到的字符拼接到rs上,这样就完成翻转了

                    最后判断两个字符串是否相等,相等输出yes,不相等输出no

                    #include <iostream>
                    #include <string>
                    using namespace std;
                    
                    int main()
                    {
                        string s,rs = "";
                        cin >> s;
                        int l = s.length();
                        for(int i = l - 1;i > -1;i--)
                            rs += s[i];
                        if(rs == s)
                            cout << "yes";
                        else
                            cout << "no";
                        return 0;
                    }
                    
                    • -3
                      @ 2023-7-19 8:54:11

                      解析:

                      回文字符串定义:顺读和倒读都一样的字符串 设当前字符串为s回文字符串,数据保存在1~n中 那么对于任意一个~~NBA~~的i,都有s[i]等于s[n - i+1]i从1遍历到n/2:如果s[i]不等于s[n - i + 1]: 不是回文,结束程序。 是回文就输出出来! ”康“到这就(>v<你懂的👀️ 😄 )

                      #include <iostream>
                      #include <cstring>
                      using namespace std;
                      char s[105];
                      int main()
                      {
                         cin >> (s + 1);
                         int n = strlen(s+1);
                         for (int i = 1;i <= n/2;i++)
                         {
                            if (s[i] != s[n-i+1])
                            {
                               cout << "no";
                               return 0;
                            }
                         }
                         cout << "yes";   
                         return 0; 
                      }
                      
                      • 1

                      信息

                      ID
                      294
                      时间
                      1000ms
                      内存
                      128MiB
                      难度
                      3
                      标签
                      递交数
                      1235
                      已通过
                      628
                      上传者