码迷,mamicode.com
首页 > 编程语言 > 详细

c++中string (MFC)

时间:2018-07-28 15:27:31      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:queue   carchive   eps   c代码   online   blank   using   空间   分享   

题目:UVALive - 6439     https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4450

 

 

技术分享图片

 

题意:  输入一个整数 t ,  代表程序测试的次数 , 然后要将一些非回文串进行替换形成回文串,  求形成的回文串的最大长度。   

 

   例如      abdab       ->  非回文串     但是将ab替换成另一个字符*    那么形成   *d*  最长是3,所以最终结果输出3。

 

 

 

 

 

 

做这题之前,先来了解C++中的  string   的用法    。

 

1.

string  是包含在  头文件<string> 中   记住并非是   cstring 或者是 string.h    ,而是另起一个头文件   string

并且需要加上  using namespace std;  的命名空间

 

 

2.

string 是c++语言中已经定义的类 ,属于一种类,

所以存在着构造函数和析构函数,

假设  

string  str;   //先声明

string(int n,int c)  ;    ------>>>>  作用是  对str进行构造函数赋值    复制是n个c是字符串

 

 

例如    str.string (3 ,‘#‘);    那么输出   str 是    ###     //三个

 

还存在  string (const char *p)       ----->   拷贝构造赋值

 

例如:   str.string("*****");    那么输出   str  s    *****

 

3.

此处是解题关键,

   string l="",r="";  //空内容

l=l+‘a‘;        //   l的内容是a

l=l+‘b‘        //    l的内容是ab

l=l+‘d‘        //    l的内容是abd

  以此类推

 

string  s="abc";

s=‘g‘+s;      //    s的内容是gabc

s=‘y‘+s;      //    s的内容是ygabc

  以此类推           (主要说明   这里加法是 字符串的连接,接前接后看加法的前后)

 

 

ac代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define Swap(a,b,t) t=a,a=b,b=t
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x));
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f;
const double eps=1e-12;
char str[50010];
int main()
{
int t,cnt=0;
cin>>t;
while (t--){
cin>>str;
int ans=0;
string l="",r="";
int len=strlen(str);
int mid=len/2;
for (int i=len-1;i>=mid;i--){
l=l+str[len-1-i];
r=str[i]+r;
if (l==r&&len-1-i!=i){
ans+=2;
l.clear();
r.clear();
}
if (i==len/2&&!l.empty())
ans++;
}
printf("Case #%d: %d\n",++cnt,ans);
}
return 0;
}

c++中string (MFC)

标签:queue   carchive   eps   c代码   online   blank   using   空间   分享   

原文地址:https://www.cnblogs.com/q1204675546/p/9381868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!