`
bcyy
  • 浏览: 1831467 次
文章分类
社区版块
存档分类
最新评论

C++ string类

 
阅读更多

http://acm.nyist.net/JudgeOnline/problem.php?pid=308

题目大意:用n个字符串,对每个字符串找出最长的一个子串,子串的逆序序列也要包含在原字符串中;

#include<iostream>
#include<string>  //用string类要包含头文件;(*.h是c的头文件)
#include<algorithm>
using namespace std;
int main(void)
{
	string str1, str2, longestSubstr;
	int ncases;
	cin>>ncases;
	while (ncases-- != 0)
	{
		cin>>str1;
		str2 = str1;
		reverse(str2.begin(), str2.end());//将str2翻转
		int maxlen = 0;
		int len, i; //len记录子串长度,i记录子串起始位置
		for (len = str1.length(); len > maxlen; len--){
			for (i = 0; i + len <= str1.length(); i++){
				if (str2.find(str1.substr(i, len)) != string::npos){//find失败时返回string::npos(等价于-1)
					maxlen = len;
					longestSubstr = str1.substr(i, len);
					break;
				}
			}
		}
		cout<<longestSubstr<<endl;
	}
	return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics