Equivalent String
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/E
题意:
给定两组字符串a和b(由小写字母构成),判断是否相等。相等条件如下:
1)若a和b为奇数字符串,只需判断字符串是否一致;
2)若a和b为偶数字符串,可将字符串分为长度相等的两部分,再进行比较。如将a分为长度相等的a1和a2两部分,将b分为长度相等的b1和b2两部分,若a1与b1相等且a2与b2相等,或者a1与b2相等且a2与b1相等,则a与b相等。
案例:
Input
aaba abaa
YES
aabb abab
NO
分析:
奇数字符串与偶数字符串条件判断有所差异,但可以考虑将偶数字符串不断拆分,最终成为奇数字符串与奇数字符串的比较(比如字符长度为6的两字符串之间进行比较,可以拆分为3+3两部分,再根据相等条件进行比较,又如字符串长度为8的两字符串之间进行比较,单个字符串可以先拆分为4+4,再将每部分拆分为2+2,2为偶数重复刚才的步骤2拆分为1+1再根据等价条件进行比较),如此一来,采用DFS及暴力求解得出最终结果。阐述不清,阅览如下具体步骤可知。
源代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 # define maxn 200000 6 char a[maxn],b[maxn]; 7 int dfs(char *m,char *n,int len) 8 { 9 int k=0; 10 if(len%2==1)//判断奇数字符串是否相等 11 { 12 for(int i=0;i<len;i++) 13 { if(m[i]!=n[i])//k值判断字符串中不等字符个数 14 k++; 15 } 16 if(!k) return 1; 17 else return 0; 18 } 19 else//判断偶数字符串 20 { 21 if((dfs(m,n,len/2)&&dfs(m+len/2,n+len/2,len/2))||(dfs(m+len/2,n,len/2)&&dfs(m,n+len/2,len/2)))//偶数字符串相等判断条件 22 return 1; 23 else return 0; 24 } 25 } 26 int main() 27 { 28 scanf("%s%s",a,b);//输入字符串 29 if(dfs(a,b,strlen(a)))//判断字符串相等 30 cout<<"YES"<<endl; 31 else cout<<"NO"<<endl; 32 return 0; 33 }
转载于:https://www.cnblogs.com/huaszjh/p/4684342.html
Equivalent String相关推荐
- LeetCode 1061. Lexicographically Smallest Equivalent String
原题链接在这里:https://leetcode.com/problems/lexicographically-smallest-equivalent-string/ 题目: Given string ...
- Linux string.c源文件 [转]
Linux string.c 注:了解各字符串函数的实现及技巧 // SPDX-License-Identifier: GPL-2.0 /** linux/lib/string.c** Copyrig ...
- java pattern.quote_Java Pattern quote(String)用法及代码示例
Pattern类的quote(String)方法用于为作为参数传递给方法的指定String返回文字模式Pattern String.此方法产生一个等效于s的String,可用于创建Pattern.输入 ...
- 编码中统一更该变量的快捷键_更多项目想法,以提高您的编码技能
编码中统一更该变量的快捷键 Two weeks ago I published an article containing 15 project ideas that you can build to ...
- 高效查看MySQL帮助文档的方法
高效查看MySQL帮助文档的方法 在mysql的使用过程中, 可能经常会遇到以下问题: 某个操作语法忘记了, 如何快速查找? 如何快速知道当前版本上某个字段类型的取值范围? 当前版本都支持哪些函数?希 ...
- c 语言字符串转二进制,在C ++中将字符串转换为二进制序列
在本教程中,我们将讨论将字符串转换为二进制序列的程序. 为此,我们将提供一个字符串.我们的任务是将每个字符转换为等效的二进制字符,并打印出来以分隔不同字符. 示例#include using name ...
- python 复制dict_超全的Python 字典(Dictionary)介绍
字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: 键一 ...
- 如何做到 byte[] 和 十六进制 互转?
咨询区 alextansc: 请问我如何实现将 byte[] 和 十六进制的string 进行互转? 回答区 balrob: 如果你的程序是基于 .NET5 的,可以使用 Convert 下新增的两个 ...
- Linux 汇编学习
为什么80%的码农都做不了架构师?>>> ____| | | _) ___| | __| | _ \ __| __| __| _ \ __ \ | __|\___ \ _ \ ...
- 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法
在mysql的使用过程中, 可能经常会遇到以下问题: 某个操作语法忘记了, 如何快速查找? 如何快速知道当前版本上某个字段类型的取值范围? 当前版本都支持哪些函数?希望有例子说明.. 当前版本是否支持 ...
最新文章
- 疫情之下,武汉女生在家中答辩,获得国外博士学位!
- 为网站加入Drupal星球制作RSS订阅源
- 涨知识!提单及运输业务中常用的一些代码、术语及意义!
- leetcode287. 寻找重复数(二分法)
- LeetCode 668. 乘法表中第k小的数(二分查找)
- 新模型SkipNet在ImageNet分类任务大放光彩!优化损失函数!
- Anaconda各版本安装包存档
- (79)FPGA版本如何管理?
- FreeRTOS内核实现04:空闲任务与阻塞延时
- python程序精确法求解反应谱,傅里叶谱,功率谱
- markdown温习笔记
- Windows10使用屏幕键盘
- 腾讯WeTestTesterHome深圳线下沙龙
- 数据集的文字标签(label)转成数字标签
- 反向代理-- WEB服务的加速器[转]
- linux设置广播路由,如何设置路由器开启ssid广播 路由器开启ssid广播的详细方法...
- 安卓查看内存读写测试软件_关于手机运行内存的四大误区,你信了几个?
- Meta-RL之Optimization as a Model for Few-Shot Learning
- python文本去重复_python多个文本组合后去除重复项
- 统计项目代码行数 intelliJ idea statistic 插件