回文字符串判断以及最长回文字符串长度判断「建议收藏」

回文字符串判断以及最长回文字符串长度判断「建议收藏」回文字符串,就是正着反着读都一样的字符串。1、回文字符串判断假如这个字符串为奇数长度的回文字符串,则除了最中间的字符外,其左右的字符串两两相同。假如这个字符串为偶数长度的回文字符串,则其左右完全对称。代码如下:#include<iostream>#include<string>usingnamespacestd;boolpalindrome(strin…

大家好,又见面了,我是你们的朋友全栈君。

回文字符串,就是正着反着读都一样的字符串。

1、回文字符串判断

假如这个字符串为奇数长度的回文字符串,则除了最中间的字符外,其左右的字符串两两相同。

假如这个字符串为偶数长度的回文字符串,则其左右完全对称。

代码如下:

#include<iostream>
#include<string>
using namespace std;
bool palindrome(string str)//判断是否为回文字符
{
	int length = str.size();
	if (length <= 0) return false;
	if (length == 1) return true;
	int left = length / 2 - 1;
	int right = length - length / 2;
	while (left >= 0 && right < length)
	{
		if (str[left--] != str[right++])
		{
			return false;
		}
	}
	return true;
}
int main()
{
      string str;
      getline(cin,str);
      cout<<palindrome(str);
      return 0;
}

2、最长回文字符串长度判断

从第一个字符开始,分析以其为中心的奇数长度或者偶数长度的最长回文字符串。

代码如下:

#include<iostream>
#include<string>
using namespace std;
int longestpalindrome(string str)
{
	int length = str.size();
	if (length <= 0) return 0;
	if (length == 1) return 1;
	int i, j;
	int max = 0;
	for ( i = 0; i < length; i++)//以i为中心
	{
		for (j = 0;(i-j>=0)&&(i+j<length);j++)//奇数回文字符串
		{
			if (str[i - j] != str[i + j])
				break;
		}
		if (2 * (j-1) + 1 > max)
			max = 2 * (j - 1) + 1;
		for (j = 0;(i-j>=0)&&(i+j+1<length);j++)//偶数回文字符串
		{
			if (str[i - j] != str[i + j + 1])
				break;
		}
		if (2 * j > max)
			max = 2 * j;
	}
	return max;
}
int main()
{
	string str;
	getline(cin, str);
	cout << longestpalindrome(str);
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135131.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云服务器开放端口步骤图_阿里云服务器新手教程

    阿里云服务器开放端口步骤图_阿里云服务器新手教程点击进入云服务器ECS2.然后点击服务器的实例id进入以下界面点击进入安全组点击配置规则点击添加安全组规则添加安全组规则就ok了

    2022年10月2日
    4
  • rc522 nfc_基于单片机的门禁系统

    rc522 nfc_基于单片机的门禁系统文章目录1.前言(包括一些个人理解)1.前言(包括一些个人理解)(2021/11/1编辑)在项目需要做一个NFC门禁功能的时候,突然发现有个RC522丢在我的桌面,甚至不知道它上面的引脚什么意思(还不会SPI通讯),搜索关键词“RC522”去看博客搜索资料,发现了很多都在说扇区,块,S50(M1)卡,然后就给代码,一开始我还以为S50是内嵌在这个模块里面的一个存储器,然后越看越怪,后面去淘宝搜索S50,才发现S50其实是我们的门禁卡,RC522是用来感应和判断的。…

    2025年12月5日
    4
  • JavaScript中的数组方法总结+详解「建议收藏」

    JavaScript中的数组方法总结+详解「建议收藏」在JS中,数组方法是非常重要且常用的的方法.在此整理总结一番.JavaScript数组的力量隐藏在数组方法中。1.js常用数组方法方法名功能返回值是否改变原数组版本push()在数组最后一位添加一或多个元素返回长度YES5-unshift()在数组前添加一或多个元素返回长度YES5-2.方法详解1.push……

    2022年7月13日
    14
  • 计算机主机网关的作用是什么?(转 )[通俗易懂]

    计算机主机网关的作用是什么?(转 )[通俗易懂]假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,

    2022年8月4日
    7
  • AI图像识别_头像搜索图片识别在线

    AI图像识别_头像搜索图片识别在线使用百度AI图像识别提供的API接口来搭建识图工具,首先要注册百度开发者账号,然后找到图像识别页面,创建应用,申请成功后会给两个重要的数据APIKey,SecretKey,这是实现识图的重要参数

    2022年8月6日
    10
  • DDL和DML的区别

    DML(DataManipulationLanguage)数据操纵语言:适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select等. DDL(DataDefinitionLanguage)数据定义语言:适用范围:对数据库中的某些对象(例如,database,table)进行管理,如create、alter、drop、TRUNCATE、show等 …

    2022年4月6日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号