根据输入的字符串,判断并输出有效的字符串的长度,和该字符串。vc++

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

题目的大概描述是这样的:

有一段字符串设置为密码,要求输入的字符串最长的对称的字符串 为 有效密码。

比如 输入 aba, aa, abba,  w2gtttg1, abaaab 等,其有效密码分别为:aba, aa, abba, gtttg, baaab.


下面是我写的实现代码,工作环境是VC6.0.      (希望高手多多指教~)



// test.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;

void getValidString(const std::string inputStr, std::string& outputStr, int& length);

int main(int argc, char* argv[])
{
	//printf("Hello World!\n");
    std::string inputStr;
	cin >> inputStr;

	std::string outputStr;
	int length = 0;
	getValidString(inputStr, outputStr, length);

	cout << outputStr << " - " << length << endl;

	return 0;
}

void getValidString(const std::string inputStr, std::string& outputStr, int& length)
{
	int inLen = inputStr.length();
	length = 0;

	if (inLen <= 0)
	{
		return;
	}

	for (int i=0; i<inLen; ++i)
	{

		for (int j=0; j<(inLen-i)/2; ++j)
		{
			bool isCode1 = false;
			bool isCode2 = false;

			// check if the current check subString is the valid code string
			for (int k=0; k<=j; k++)
			{
				// check second mode: ababa
				if (i+j+k+2 >= inLen)
				{
					isCode2 = false;
					break;
				}
				if(inputStr[i+j-k] == inputStr[i+j+k+2])
				{
					isCode2 = true;
				}
				else
				{
					isCode2 = false;
					break;
				}
							
			}
			
			// get the valid string and length
			if (isCode2 && 2*(j+1) + 1 > length)
			{
				length = 2*(j+1) + 1;
				outputStr = inputStr.substr(i, length);
			}
			else 
			{
				for (int k=0; k<=j; k++)
				{
					// check first mode:abba
					if(inputStr[i+j-k] == inputStr[i+j+k+1])
					{
						isCode1 = true;
					}
					else
					{
						isCode1 = false;
						break;
					}	
				}

				if(isCode1 && 2*(j+1) > length)
				{
					length = 2*(j+1);
					outputStr = inputStr.substr(i, length);
				}
					
			} //end of esle
			
		}//end of for j
		
	}//end of for i

}















48.如何判断字符串是否是回文串——在VC++6.0中实现 回文串(Palindrome)是指正着读反着读都相同的字符串。举个简单的例子,单词“level”就是一个回文串,因为从左到右从右到左读都是“level”。相比之下,“hello”则不是回文串,因为从左到右读是“hello”,从右到左读是“olleh”,二者不同。判断一个字符串是否为回文串,通常可以通过比较字符串的左右两端字符是否一致来实现。如果有任何一对字符不匹配,则说明这个字符串不是回文串;如果所有字符都匹配,则说明是回文串。 阅读详情

相关推荐

72.如何在VC++6.0中实现反转字符串功能

简单来说,字符串反转就是将一个字符串中的字符顺序颠倒。例如,字符串"Hello"反转后的结果是"olleH"。在实际应用中,字符串反转常常用于处理字符串中的数据格式、字符串搜索、加密解密等场景。

Lucy_wzw的博客 565

C++字符数组的输入输出 | 原样输出输入字符串

C++字符数组的输入输出 在C++中,字符数组的输入输出有两种方式 逐个输入输出字符 将整个字符串一次输入输出 经典案例:C++输出字符串 #include<iostream>//预处理 using namespace std;//命名空间 int main()//主函数 { char str[10]; cout<<"请手动输入长度小于10的字符串:"; cin>>str; cout<<"输出手动输入字符串:"; cout<&

weixin_48669767的博客 5150

65.如何在VC++ 6.0中实现字符串的间隔取值函数

通过这篇博客,我们展示了如何在VC++ 6.0环境下编写一个从字符串中按给定区间步长提取字符的函数。这种类型的字符串处理在许多应用中都非常有用,尤其是在文本处理数据解析等领域。希望通过这个简单的示例,大家能够对字符串处理有更深的理解,在实际项目中灵活应用。

Lucy_wzw的博客 1546

写一函数,求一个字符串长度。在main函数中输入字符串输出长度

代码】写一函数,求一个字符串长度。在main函数中输入字符串输出长度

sunzixian998的博客 1万+

实现字符串长度输出长度(2)

#include <stdio.h> #include <stdlib.h> main() { int j=0,i; char str1[20]; printf(“输入一个字符串:”); for(i=0; i<=20; i++) if(str1[i]!=’\0’) j++; else break; printf("%d",j); } ...

weixin_45813454的博客 560

统计字符串长度

/* * 程序的版权版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: fun.cpp * 作 者:王飞 * 完成日期:2012 年12 月 19日 * 版本号: v1.0 * 对任务及求解方法的描述部分:统计字符的长度 * 输入描述:略 * 问题描述:略 * 程序输出:如下 */

fly 1546

输入一个字符串,求它的长度输出。(c语言)

#define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; //输入一个字符串,求出它的长度输出 void main(char* args) { //定义一个字符数组 char Str[100]; int length=0; printf("输入一个字符串:\r\n"); ...

蓝创精英团队 4万+

求串长,输入一个字符串,求长度输出

Description 建立字符串的定长存储结构,输入一个字符串,求长度输出。 Input 输入一个字符串。 Output 输出长度。 Sample Input Hello world! Sample Output 12 //求串长 #include <bits/stdc++.h> using namespace std; // 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR ..

weixin_47919250的博客 3506

VC++字符串的表示

我们通过在字符串两端加双引号来表示字符串常量,但这是ANSI格式的字符串常量,要定义Unicode字符串常量,还需在前面个加“L”前缀:“L”后面所有的字符都用两字节表示,包括末尾的NULL,所以UNICODE字符串的字节长度总是2的倍数。ANSIUNICODE字符串的字节长度都可以用sizeof(TCHAR)的倍数表示。VC++也提供了两个宏来确保字符串以正确的格式定义,分别是_TTEXT。#else#endif这两个宏的含义是一样的,TEXT的可读性更好一些。

stevenjoo67的博客 1284

为什么VC++主要使用的字符串是没有长度的类型

VC++ 常用的 “无长度字符串”(char*/wchar_t*)是 C 语言的历史继承,核心是极简 / 兼容,而非 BSTR 的内存问题;BSTR 的内存开销可忽略,没成为主流是因为其设计目标是 COM 交互,而非通用编程;“循环读双零、中文拆串、速度慢” 是误用导致的问题:避免循环找终止符:用(显式长度)或提前缓存长度;中文不拆串:统一编码(UTF-16/wchar_t 或 UTF-8 + 正确遍历);现代 VC++ 开发应优先使用或CString

505

[C语言]统计输入字符串长度、字母个数、数字个数、其他个数

[C语言]统计输入字符串长度、字母个数、数字个数、其他个数 例如: 输入:KOBE24&VC++ 输出长度 11字母 6数字 2其他 3 完整代码如下: #include<stdio.h> #include<string.h> #define N 50 void Total(char str[N],int b[]) { int i; for(i=0;str[i]!='\0';i++) { if(str[i]>='0'&&st

皮埃尔的博客 7611

VC++中截取字符串的方法

VC++编程中,我们有时会遇到关于截取字符串的问题,对于CString类型字符串的截取VC++中有现成的函数可供使用,主要是:CStringMid(intnFirst,intnCount);BOOLAfxExtractSubString(CString&rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = 10);这两个函数。 这两个函数非常好用,而且值得一说的是,其中的AfxExtractSu...

翻肚鱼儿的博客 2042

设计一个程序,判定输入字符串是否回文

程序1,用函数实现:# include # include int fun(char *p, char *q){ char *s, *t; int n; n = strlen(p); //计算输入字符长度; s = p+n-1; //将字符的位置移到串尾; t = q; //保留逆序后的字符串的首地址; while(n--) *q++ = *s--; //将原字符串从串尾字符开始逆序赋给s2

YuJar的专栏 5998

《面向对象程序设计与VC++实现》--liwei_2_1(字符串基本操作 求长度、复制、连接)

//--《面向对象程序设计与VC++实现》//--Liwei_2_1//--字符串基本操作(长度、复制、连接)//--11/5/2005 Sat. morning  8:00--12:00//--Computer Lab#include using namespace std;int StrLength(char *str);char *StrCopy(char *str1,char *str2)

网络空间安全与企业信息化 1771

c语言屏幕输出长度,P726.C 字符 从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)...

编写一程序P726.C实现以下功能从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。注意:(1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。(2)若用户输入输入了很多字符,则仅读入前100个字符。(3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。(4)编程可用素材:printf(“...

weixin_31115505的博客 1019

VC++窗口重绘 OnDraw函数 添加字符串资源

窗口重绘 在Windows程序运行时,如果程序窗口大小发生变化,窗口会发生重绘,那么窗口中已输入的文字或图形就会被擦除掉。如果希望输入的内容始终保留在窗口上,就要在响应WM_PAINT消息的函数中将内容再次输出。在MFC应用程序向导产生的视类代码中,给我们提供了一个类似于WM_PAINT消息响应函数的OnDraw函数,当窗口发生重绘时,应用程序框架代码就会调用该函数。 OnDraw函数 在CTextView类中,OnDraw函数的定义如例所示。 void CTextView::OnDraw(CDC

当路danglu0010 4281

59.C语言实战:统计字符串中的整数个数(VC++6.0实现)

本文通过一个实用的例子,讲解了如何在C语言中处理字符串,识别数字块进行计数。这个例子不仅考察了基本的字符操作技能,也锻炼了逻辑思维程序结构设计能力。无论你是初学者还是复习基础的开发者,这类题目都是很好的练手题。希望这篇文章对你有所帮助!如果你喜欢这类C语言练习题,欢迎留言分享你遇到的其他有趣问题,我会持续更新更多实战技巧与解题思路!🚀。

Lucy_wzw的博客 1171

VC++截取输入输入信息钩子dll实现

我们在实现输入法的智能纠正的时候,需要获取输入输入的信息,如何实现呢,钩子如下#include "windows.h" #include "imm.h" #include "stdio.h" //#define HOOK_API __declspec(dllexport) HHOOK g_hHook = NULL; //hook句柄 HIN

尹成的技术博客 5624
上一篇: 求空间中线段上到已知直线距离最近的点
下一篇: 5人分鱼问题
我叫刘鹏
博客等级 码龄19年 5粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值