zoukankan      html  css  js  c++  java
  • Equivalent Strings

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/A

    题意:

         判断字符串是否相等,有以下两种情况任意一种就想等

         1)它们是完全相等的。

         2)把字符串a分离为两个长度相等的字符串a1,a2,字符串b也同样分为两个长度相同的字符串b1,b2,以下两种情况任意一种就想等

                      (1)a1与b1相等,a2与b2相等。

                      (1)a1与b2相等,a2与b1相等。

         输入的两个字符串长度一定是相等的。两个字符串相等,输出YES,否则,输出NO。

         案例:

          input

          aaba

          abaa

          output

          YES

    思路分析:

           当字符串的长度为奇数时,要判断整个字符串是否完全相等,当字符串长度为偶数时,就要把它分为长度相等的两部分,再一次判断是否为奇数。。。。。

           刚开始定义的是string类,但是很难写下去,建议用char型,定义数组。

    源代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define maxn 200000
     5 using namespace std;
     6 char a[maxn],b[maxn];
     7 int DO(char *a,char *b,int l)
     8 {   int t;
     9     if(l%2!=0)                  //长度为奇数判断
    10     {
    11         t=0;
    12         for(int i=0;i<l;i++)
    13              if(a[i]!=b[i])
    14                  t++;
    15         if(!t)
    16             return 1;
    17         else
    18             return 0;
    19     }
    20 
    21     else
    22     {
    23         if((DO(a,b,l/2)&&DO(a+l/2,b+l/2,l/2))||(DO(a,b+l/2,l/2)&&DO(a+l/2,b,l/2)))    
    //长度为偶数判断 24 return 1; 25 else 26 return 0; 27 } 28 } 29 int main() 30 { 31 int len; 32 scanf("%s%s",a,b); 33 len=strlen(a); 34 if(DO(a,b,len)) 35 cout<<"YES"<<endl; 36 else 37 cout<<"NO"<<endl; 38 return 0; 39 }
  • 相关阅读:
    RPi.GPIO
    Linux(Ubuntu)下查看摄像头是否挂载及挂载的USB端口号
    python--python脚本中调用shell命令
    pip
    MQTT
    Ubuntu安装pip
    python Opencv开启USB摄像头并录像保存
    视频 客服
    Android Test
    MAC系统下ADB入门与简单使用
  • 原文地址:https://www.cnblogs.com/q-c-y/p/4683197.html
Copyright © 2011-2022 走看看