C++求解字符串(最小子字符串,最大子字符串,删除指定字符串)

#include <iostream>
#include <string.h>
#define SIZE 10
#define MAXVALUE 0x7fffffff
using namespace std;

//题目是:求一个字符串中最小字串.
//求最小字串,比求最大字串难的多,下面有我的求最大字串代码,我没有想到更好的方法,下面的这个方法虽然空间复杂度太大,可是时间复杂度是比较快的。
template<typename T>
struct Node
{
	T data;//数据
	int index;//保存下标。
};

template<typename T>
class MyNode
{
	public:
	MyNode(T *a=NULL,int sz = SIZE,T a1=T(),T a2=T())//开始我的结构,将包含a1,a2的所有位置都存储在节点里面。
	{
		node = new Node<T>[sz];
		size=0;
		for(int i=0;i<sz;i++)
		{
			if(a[i]==a1)
				{
					node[size].data = a1;
					node[size].index = i;
					size++;
				}
			if(a[i]==a2)
				{
					node[size].data = a2;
					node[size].index = i;
					size++;
				}
		}
	}
	int Mindex(int &x,int &y)//得到最小子串的下标x,y。
	{
		int n = size-1;
		int min=MAXVALUE;
		for(int i=n;i>0;i--)
		{
			for(int j=i-1;j>=0;j--)
				{
					if(node[i].data!=node[j].data)
						{
							if((node[i].index-node[j].index)<min)
							{
								min = node[i].index-node[j].index;
								y = node[i].index;
								x = node[j].index;
							}
						}
				}
		}
		return 0;
	}
	char *GetStrMin(int x,int y,char *str)//跟据下标得到最小字符串.
	{
		char *p = str;
		p += x;
		*(str+y+1)='\0';
		return p;
	}
	private:
	int size;
	Node<T> *node;
};
int main()
{
	char a[]="cbbbbbbaaaaabbbc";
	MyNode<char> mynode(a,strlen(a),'a','c');//这里ac的顺序不用考虑.
	int x,y;
	mynode.Mindex(x,y);
	cout<<mynode.GetStrMin(x,y,a)<<endl;
	return 0;
}

----------------------------------------------------------

#include <iostream>
#include <string.h>
//此处是最大字串的求解,较之最小字符串的求解要简单的多.
using namespace std;
char* MinStr(char *str,char a1,char a2)
{
	char *p = str;
	char *q = str+strlen(str)-1;
		while(1)
		{
			if(*p==a1 || *p==a2)
				break;
			p++;
		}
		while(1)
		{
			if(((*p==a1)&&(*q==a2)) || ((*p==a2)&&(*q==a1)))
				break;
				q--;
		}
		*q='\0';
		return p;
}
int main()
{
	char a[]="babbbbbbbcc";
	cout<<MinStr(a,'a','c')<<endl;
	return 0;
}

----------------------------------------------------------------

#include <iostream>
using namespace std;
//在字符串中删除特定的字符(字符串)。
//题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
//例如,输入”They are students.”和”aeiou”,
//则删除之后的第一个字符串变成”Thy r stdnts.”。

char *Grial(char *str,char *s1)
{
	char *p = str;
	char *q = s1;
	while(*q!='\0')
	{
		while(*p!='\0')
		{
			while(*p!=*q && *p!='\0')
			{
				p++;
			}
			char *m = p;
			while(*m!='\0')
			{
			*m=*(m+1);
			 m++;
			}
		}
		q++;
		p=str;
	}
	return str;
}
int main()
{
	char a[]="123456   23A    AB234";
	char b[]="23";
	cout<<Grial(a,b)<<endl;
}

时间: 2024-08-05 11:32:32

C++求解字符串(最小子字符串,最大子字符串,删除指定字符串)的相关文章

String的两个API,判断指定字符串是否包含另一字符串,在字符串中删除指定字符串。

// 在字符串中删除指定字符串. String phoneNum="1795112345"; phoneNum = phoneNum.replace("17951", ""); System.out.println(phoneNum); //判断指定字符串是否包含另一字符串 String phoneNum="1795112345"; String IpNum="17951"; return phoneNum

删除指定字符串的算法题,面试时候没做出来

很多年没来这里了. 今天上午参加了字节跳动视频面试,面试官让现场做一道算法题,有点紧张做错了.我把题目发出来,有需要的朋友看看. 题目:删除字符串 描述:给定一个字符串,不考虑大小写,将该字符串中连续的某个子串'XXX'删除,返回结果中不包含'XXX'. 例子: 输入字符串:aaaabbbbb XXX子串:ab 输出结果:b 结束面试后,花了几分钟时间做了一下(用python语言实现). 1 def removeString(in_str, remove_str='ab'): 2 ret_lis

从第一个字符串中删除指定字符串

demo: //删除str1中与str2相同的字母 var str1='stay hungry stay foolish'; var str2='she'; ------------------1正则replace()------------------------- ------------------2字符串的split和数组的join------------ for(var i=0;i<str2.length;i++){ str1=str1.split(str2[i]) .join('')

练习-文本日志增加删除(指定字符串格式)

日志格式 backend test.oldboy.orgb1 backend buy.oldboy.org import json s = '''{"backend":"%s", "record":{ "server":"%s", "weight":"%s", "maxcoon":"%s" } }''' # 显示一级菜单 def

字符串指定间隔长度插入指定字符串

最近碰到一个这样的需求,字符串指定间隔长度插入指定字符串,大概描述一下 有一字符串 “abcde12345fghig67890” ,我想指定间隔长度为5(这个是字符串长度能够被5整除),插入“/”字符串(字符串不限制长度). 最后返回结果“abcde/12345/fghig/67890” . 下面是我实现此功能代码,贴出来与大家讨论,我觉得写法太繁琐,看大家有没有更好实现方法. using System; using System.Collections.Generic; using Syste

Python删除空格字符串两端的空格

我们经常在处理字符串时遇到有很多空格的问题,一个一个的去手动删除不是我们程序员应该做的事情,今天这篇技巧的文章玩蛇网就来给大家讲一下,如果用Python去除字符串两边的空格.我们先创建一个左右都有N个空格的字符串变量,看代码: >>> s = " iplaypython " >>> 去除字符串空格,在Python里面有它的内置方法,不需要我们自己去造轮子了.lstrip这个字符串方法,会删除字符串s开始位置前的空格. >>> s.l

谭浩强 c程序设计 8.17用递归法将一个整数n转换成字符串。例如,输入486,应输出字符串&quot;486&quot;。n的位数不确定,可以是任意位数的整数。

8.17用递归法将一个整数n转换成字符串.例如,输入486,应输出字符串"486".n的位数不确定,可以是任意位数的整数. #include <stdio.h> char str1[20];int i=0;long n;int main(){        int longToStr(long n);    char *revstr(char *str, int len);    printf("请输入一个整数n:\n");    scanf("

PHP判断字符串中是否包含指定字符串,支持中文哦

RT,随手写的 1 /** 2 * 判断字符串中是否包含指定字符串 3 * @var source 源字符串 4 * @var target 要判断的是否包含的字符串 5 * @return bool 6 */ 7 function hasstring($source,$target){ 8 preg_match_all("/$target/sim", $source, $strResult, PREG_PATTERN_ORDER); 9 return !empty($strResul

JS判断字符串是否为空、过滤空格、查找字符串位置等函数集

这是一个由网上收集的JS代码段,用于判断指定字符串是否为空,过滤字符串中某字符两边的空格.查找指定字符串开始的位置.使用IsFloat函数判断一 个字符串是否由数字(int or long or float)组成.IsDigital函数判断一个字符串是否由数字(int or long)组成等功能: //IsEmpty函数判断一个字符串是否为空 function IsEmpty(his) { flag = true; for(var i=0;i<his.length;i++) { if(his.c