华为測试 公共子串计算

题目标题:

计算两个字符串的最大公共字串的长度,字符不区分大写和小写

输入两个字符串

输出一个整数

案例输入:asdfas werasdfaswer

案例输出:6

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str1,str2,temp;
	int m,MaxNum=0,Len;
	cin>>str1>>str2;
	string::size_type index1;
	string::size_type index2;
	for(index1=0;index1!=str1.size();++index1)
	{
		str1[index1]=tolower(str1[index1]);
	}
	for(index2=0;index2!=str2.size();++index2)
	{
		str2[index2]=tolower(str2[index2]);
	}
	for(int j=1;j<=str1.size();++j)
	{
		for(int i=0;i!=str1.size();++i)
		{
			if(i+j<=str1.size())
			{
				temp=str1.substr(i,j);
				m=str2.find(temp);
				if(m!=string::npos)
				{
					Len=temp.size();
					if(Len>MaxNum)
						MaxNum=Len;
				}

			}
		}
	}
	cout<<MaxNum;
	return 0;
}
时间: 2024-10-21 00:46:45

华为測试 公共子串计算的相关文章

华为测试 公共子串计算

题目标题: 计算两个字符串的最大公共字串的长度,字符不区分大小写 输入两个字符串 输出一个整数 案例输入:asdfas werasdfaswer 案例输出:6 #include<iostream> #include<string> using namespace std; int main() { string str1,str2,temp; int m,MaxNum=0,Len; cin>>str1>>str2; string::size_type ind

华为机试-公共字串计算

题目描述题目标题:计算两个字符串的最大公共字串的长度,字符不区分大小写详细描述:接口说明原型:int getCommonStrLength(char * pFirstStr, char * pSecondStr);输入参数: char * pFirstStr //第一个字符串 char * pSecondStr//第二个字符串 输入描述:输入两个字符串 输出描述:输出一个整数 输入例子:asdfas werasdfaswer 输出例子:6 效率低的Java程序实现: import java.ut

华为机试—相同子串

输入一个字符串,判断是否含有相同的子串(字串长度大于1),是输出1,否,输出0. 例如12312含有两个12,所以输出1:23456则没有相同子序列,输出0. 输入:12312 输出:1 #include<iostream> #include<string> using namespace std; int main(int argc, char *argv[]) { string s; cin>>s; bool flag=false; for(int i=0;i<

华为机试—查找子串个数

输入一个字符串,判断有多少个子串. 输入: asdg ds  dga 输出:3 #include <iostream> #include <string> using namespace std; int num_of_sub(char *str) { int len = strlen(str); int count = 0; for(int i= 0;i < len;i++) { if(str[i] != ' ') { for(int j = i;j < len;j+

华为測试 坐标移动

开发一个坐标计算工具, A表示向左移动.D表示向右移动.W表示向上移动,S表示向下移动. 从(0,0)点開始移动,从输入字符串里面读取一些坐标.并将终于输入结果输出到输出文件中面. 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔. 非法坐标点须要进行丢弃.如AA10;  A1A;  $%$;  YAD; 等. 以下是一个简单的样例 如: A10;S20;W10;D30;X;A1A;B10A11;;A10; 处理过程: 起点(0,0) +   A10   =  

华为測试 超长整数相加

请设计一个算法完毕两个超长正整数的加法. 输入两个字符串数字 输出相加后的结果.string型 例子输入:99999999999999999999999999999999999999999999999999 1 例子输出:100000000000000000000000000000000000000000000000000 #include<iostream> #include<string> using namespace std; string add(string num1,

华为測试 整形数组合并

合并输入的两个整形数组并去掉反复的数字按升序输出: 案例输入:3 1 2 5 4 -1 0 3 2 案例输出:-101 #include<iostream> #include<vector> using namespace std; void maopao(vector<int>&arry); int main() { int N1,N2,num; string line; vector<int>arry1; cin>>N1; for(i

【华为机试练习】计算字符个数

题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小写.输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符.输出描述:输出输入字符串中含有该字符的个数. 解法(C语言版): #include<stdio.h> #include<string.h> #include<math.h> int main() { char str[10000]; char ch; int n, i, cn

最长公共子串(Longest common substring)

问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子串.(子串中的字符要求连续) 这道题和最长公共子序列(Longest common subsequence)很像,也可以用动态规划定义.公式如下: 这里c[i,j]表示以Xi,Yj结尾的最长公共子串的长度. 程序实现: int longestCommonSubstring(string x, string y) { int m = x.length();