对称字符串的处理

Tyvj初学者题库,倒数第二题:Q1079:http://www.tyvj.cn/Open_Problem_Show.aspx?id=1079

描述 Description
某某国王(不是萨拉克门托..!)有一个神奇的魔镜,,,

它可以把东西变为原来的两倍..
(可惜是反的..)

某日,他感到很无聊,
于是把皇后的一串珠子变了不知道几次..

皇后回来之后不是很高兴,,
她还是喜欢原来那串珠子,,

现在告诉你改变之后珠子的形状,,
请你告诉她,原来的珠子是什么样子的..
输入格式 InputFormat
一行,一串字符,表示现在的珠串
长度小于100
输出格式 OutputFormat
一行,原来的珠串
样例输入 SampleInput [复制数据]
1232232112322321
样例输出 SampleOutput [复制数据]
1232
数据范围和注释 Hint
注意 若左右对称则保留左边的一节
也是水题一道,不过值得注意的是,做到什么时候停止呢?我一开始没想那么多,只是做到s不是回文串就停止了,wa了一次之后觉得不行呀,这个,还得加一个判断,就是当s的长度为奇数时也得停下来!因为魔镜变出来的字符串的长度一定都是偶数的,所以一旦是奇数就应该停止,然后输出!

果然,ac了,嘿!初学者题库差不多刷完了,主题库也有同时在做,不过进度没这边这么快,接下来我打算把《算法导论》好好看一下,因为大一这一年,虽然一开始就买了这本超级好的书,但是一直都是懵懵懂懂,现在感觉自己有能力来自学了!!!加油,分专题来学吧,动态规划,贪心,深搜和广搜,然后是数论和几何!先把这些都弄懂,同时坚持每天都来刷题,再忙也要挤出时间,大二可不能跟大一一样乱来了!!!

(⊙o⊙)…差点忘了贴代码:

#include <iostream>
#include <string>
using namespace std;

inline bool haha(string& s)
{
	int beg = 0, end = s.size() - 1;
	while(beg < end)
	{
		if(s[beg] != s[end]) return false;
		++beg;
		--end;	
	}
	return true;
}

int main()
{
	string s;
	cin >> s;
	while(haha(s)&&s.size()%2==0)
		s = s.substr(0,s.size()/2);
	cout << s << endl;
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值