CVTE笔试题二:判断两个字符串的拼接方式是否相同
2017-07-30 21:47
288 查看
CVTE编程题二:输入两个字符串,判断这两个字符串的拼接方式是否相同
具体要求: 给定函数 bool func(const string& s,const string& t);
示例: 输入paper title,输出:true;
输入aba abab,输出:false;
输入look feed,输出:true;
本题采用两个标记数组来记录两个字符串的拼接方式,遇到相同的字符就用同一个数字标记,下一组相同字符用另一个数字标记,依次类推,若两个标记数组一样则拼接方式相同,否则不相同。
听朋友说这个题可以用动态规划解决,目前我还不太了解动态规划,所以只能选择这种笨方法了,大家可以试下用动态规划去解决。
具体要求: 给定函数 bool func(const string& s,const string& t);
示例: 输入paper title,输出:true;
输入aba abab,输出:false;
输入look feed,输出:true;
本题采用两个标记数组来记录两个字符串的拼接方式,遇到相同的字符就用同一个数字标记,下一组相同字符用另一个数字标记,依次类推,若两个标记数组一样则拼接方式相同,否则不相同。
#include <iostream> #include <string> #include <vld.h> using namespace std; void Tag_arr(string str,int *a,int len) //求两个字符串的标记数组 { int num = 1; for(int i=0;i<len-1;++i) { for(int j=i+1;j<len-i;++j) { if(str[j] == str[i]) { a[i] = num++; a[j] = a[i]; } } } } bool func(const string& s,const string& t) { int len1 = s.size(); int len2 = t.size(); if(len1 != len2 ) return false; int *arr = new int[len1]; int *brr = new int[len2]; for(int i=0;i<len1;++i) { arr[i] = -1; brr[i] = -1; } Tag_arr(s,arr,len1); Tag_arr(t,brr,len2); for(int i=0;i<len1;++i) { if(arr[i] != brr[i]) //判断两个标记数组是否相同,若相同返回真,否则返回假 { return false; } } delete []arr; delete []brr; return true; } int main() { string str1,str2; cin>>str1; cin>>str2; int tag = func(str1,str2); if(tag == 1) cout<<"true"<<endl; else cout<<"false"<<endl; return 0; }
听朋友说这个题可以用动态规划解决,目前我还不太了解动态规划,所以只能选择这种笨方法了,大家可以试下用动态规划去解决。
相关文章推荐
- 经典笔试题 ——判断两个字符串是否为变形词
- Java 判断两个字符串是否由相同的字符组成的实例
- Arrays_Strings 判断两个字符串是否有相同的字符 @CareerCup
- go判断两个字符串是否是是相互打乱的,也就是说它们有着相同的字符,但 是对应不同的顺序。
- Java 判断两个字符串是否由相同的字符组成
- 判断两个字符串是否由相同的字符组成
- ReferenceEquals()判断两个字符串是否指向相同的内存地址
- 判断两个字符串是否由相同的字符组成
- [google面试CTCI] 1-4.判断两个字符串是否由相同字符组成
- 判断两个字符串内数字是否相同,向量相同的C++程序。
- 判断两个字符串是否由相同字符组成
- 经典笔试题—— 判断两个字符串是否为旋转词
- [算法]判断两个字符串是否由相同的字符组成
- [google面试CTCI] 1-4.判断两个字符串是否由相同字符组成
- JavaSE8基础 String equalsIgnoreCase 判断两个字符串的内容是否相同 (不区分大小写)
- [字符串算法题]2.判断两个字符串是否由相同的字符组成
- 判断两个字符串是否包含相同的字符
- java 判断两个字符串是否由相同的字符组成 排序算法 空间换时间的方法
- 1.4-判断两个字符串是否由相同字符组成
- JavaSE8基础 String equals 判断两个字符串的内容是否相同(区分大小写)