递归算法查找字符串中相同字符连续出现的最大次数

【百度研发工程师笔试题】递归求字符串中相同字符连续出现的最大值 用递归的方式实现一个求字符串中连续出现相同字符的最大值 阅读详情
题目:使用递归算法查找字符串中相同字符连续出现的最大次数
举例:输入“aaabbc”,输出3
分析:问题实质上是“查找字符串中相同字符连续出现的最大次数”,关键是限制了只允许使用递归的方法。
思路:1、非递归的情况:连续字符的问题可以通过设置前后指针,不断移动比较两个指针的值即可解决。
int CountMaxNumOfChar(const char *str) {
	if (str == NULL || *str == '\0') return 0;

	const char *pBefore = str;
	int max = 1;
	int cur = 1;
	while (*++pBefore) {
		if (*pBefore == *str) {
			++ cur;
			max = cur > max ? cur : max;
		}
		else {
			str = pBefore;
			cur = 1;
		}
	}
	return max;
}

2、递归的情况:递归要把问题分解成与原问题同类型的子问题,这里考虑把一个字符串的最大连续字符次数分解为求第一个字符的连续的次数,若不为当前最大,继续向后考虑子串,直到遍历全部字符串。这里需要保存第一个字符已经出现的次数和当前最大的次数。递归里面保存传递数据,可以使用参数传递,也可以考虑使用静态变量(求阶乘中有使用)。这里统计第一个字符的次数使用静态变量,保存当前最大使用参数传递。
void CountMaxNumOfCharCore(const char *str, int *max) {
	static int count = 1;
	if (*str) {
		if (*str == *(str - 1)) 
			*max = ++ count > *max ? count : *max;
		else 
			count = 1;

		CountMaxNumOfCharCore(++str, max);
	}
}

int CountMaxNumOfCharRecursive(const char *str) {
	if (str == NULL || *str == '\0') return 0;
	if (*++str == '\0') return 1;
	int max = 1;
	CountMaxNumOfCharCore(str, &max);
	return max;
}

PS:百度,2013,校招,笔试
参考:
[1]http://blog.youkuaiyun.com/zyy5411/article/details/8104493
查找字符串中出现重复次数最多的字符 查找字符串中出现重复次数最多的字符,面试中经常遇到的面试题,对找工作很有帮助,拿出来与大家一起学习进步。 立即下载

相关推荐

Mission Planner连接Autopilot保姆级教程:从USB到无线全搞定

本文提供Mission Planner连接Autopilot的全面指南,涵盖USB直连、无线数传、蓝牙适配等多种连接方案。详细讲解驱动安装、波特率匹配、性能优化等关键步骤,并分享多链路冗余配置与故障转移的高阶技巧,助你快速解决连接问题。

weixin_28455801的博客 377

华为OD机试题:连续字符最大次数

题目描述:输入一串字符串,字符串长度不超过100,查找字符串中相同字符连续出现的最大次数。 输入描述:输入只有一行,包含一个长度不超过100的字符串 输出描述:输出只有一行,输出相同字符串连续出现的最大次数 说明:字符串区分大小写 示例:1.输入:hello 输出:2 2.输入:word 输出:1 3.输入:aaabbc 输出:3...

cxh21627的博客 725

2019美亚杯团体赛刷题 部分题解(1-42、106-116)

文章目录写在前面使用工具刷题1.在黑客路由器里,有一台设备的MAC地址为00:11:6B:47:4D:55,请问它的IP地址是什么?2.在黑客路由器里,发现一设备的IP地址为192.168.0.103,请问该设备为如下哪一个:3.警方已经查证所有连接此router的设备都归黑客所有,根據黑客路由器的訊息,下列哪组(设备---ip)是错误的:4.Hacker现场检获的Windows主机硬盘已成功取证并制作成镜像Win1.E01,下列哪个是其硬盘证据文件的MD5哈希值。5.MD5hash算法会产生一个什么大小的

7ruth0hn的博客 7545

计算字符串中最大连续相同的字符个数

3.如果当前连续字符大于max,将max的值改为count,一旦出现前后字符不相同,将count置为1然后继续循环,当循环到后一个字符是\0时代表字符串已经结束,返回max。2.需要一个max记录出现过的最大的连续相同字符个数,还需要一个count记录当前连续字符已经出现了几个。ok,理清思路,咔,很快啊,代码就写出来了。1.只要字符串有值,连续相同最少也是一个。怎么做呢,先理一下思路。大功告成,继续学习!

m0_67331304的博客 1265

WGCNA样本量不够怎么办?5种替代方案帮你解决小样本基因共表达分析难题

本文针对WGCNA样本量不足的问题,提供了5种科学替代方案,包括CEMiTool、参数调整、多组学数据整合、机器学习特征提取和公共数据利用。这些方法帮助研究者在小样本条件下仍能进行可靠的基因共表达分析,特别适用于罕见病和珍贵临床样本研究。

weixin_42554042的博客 303

MicroPython ubluetooth 库详细介绍

MicroPython的ubluetooth库为蓝牙通信提供了强大的支持,使得开发者能够在MicroPython环境下轻松实现蓝牙设备之间的通信。其中ubluetooth库为MicroPython提供了强大的蓝牙通信功能,使得开发者能够轻松地在各种支持MicroPython的硬件平台上实现蓝牙设备之间的通信。它提供了一系列的函数和类,用于实现蓝牙设备的扫描、连接、数据传输等功能。- 上述代码中,首先创建了一个蓝牙服务和一个特征,然后可以通过read和write函数读取和写入特征值。# 处理连接成功事件。

m0_46311182的博客 1761

12、字符串中连续最多的字符以及次数

要注意实际复杂度,不要被代码表面迷惑双指针常用于解决嵌套循环算法题慎用正则表达式(实际工作可以用)

天界程序员的博客 792

【华为OD机试真题】45、 分糖果 | 机试真题+思路参考+代码解析(C++、Java、Py、JS)

### 🎃题目描述 >小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 >  当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 >  小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 1290

【C语言】计算字符串 中最大连续相同的字符个数

【代码】【C语言】计算字符串 中最大连续相同的字符个数。

weixin_43716840的博客 907

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

RSA算法详解:万字文章详解RSA的加密与解密

为了彻彻底底的研究明白RSA算法,真的是。。煞(lei)费(si)苦(wo)心(le),首先我希望自己前前后后、彻彻底底的琢磨明白,其次我也希望我把他分享出来以后,大家都能读得懂,这篇文章真的是我迄今为止写的又臭又长的一篇文章了,但是我能保证的是,你读完了以后,绝对不会再问RSA是啥玩意儿了。。

布啦啦 7668

寻找字符串中,连续重复次数最多的字符

比如有一个字符串: ‘aaaabbbbbcccccccccccccdddddd’ 这里边连续重复出现次数最多的是 c 共出现了 13 次,我们要想办法使用js找出来 解题思想:同时声明两个指针,i 和 j,初始值都是 0 同时指向下标为 0 的位置,遍历字符串,i停在 0 位, j 往后走,每走一次和 i 指针指向的位置做比较,如果相同,什么也不做,如果不同,就说明连续重复出现 的字符串结束了,i — j 指针之间的字符串就是相同的,j - i 就是出现的次数 这时候判断 j - i 是否大于 maxR

泥猴桃的博客 5142

128、点云配准与ICP:经典配准算法与深度学习配准

上周调试一台双臂协作机器人,左手持结构光相机扫描桌面上的随机堆叠工件,右手准备执行抓取。问题出在“对齐”这一步——相机扫描得到的点云和CAD模型点云之间差了大约15度的旋转,导致抓取姿态计算出来直接怼到桌面上。我第一反应是“ICP跑一下不就行了”,结果跑了三分钟,误差纹丝不动,甚至越迭代越发散。后来查了日志才发现,初始位姿给得太离谱,ICP直接掉进了局部最优。这个场景太典型了——很多人以为点云配准就是调个ICP库函数,实际工程里坑比想象中多得多。今天这篇笔记,咱们把点云配准这件事从头捋一遍。

sundong_81的博客 42

[2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2。 以下是我想出来的方法: #include using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m) /

Miracles happen every day. 7207

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

用递归实现查找字符串中相同字符连续出现次数的最大值

// recursive.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;//char szGame[]={w,w,k,k,k,k,l,l,l,m,m,m};c

ArduousBonze的专栏 3847

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

字节青训-比赛配对问题 、组成字符串ku的最大次数

支队伍开始,直到决出唯一获胜队伍为止,总共进行的配对次数。每次配对都会减少队伍的数量,直到只剩下一个队伍。小R想知道在比赛中进行的配对次数,直到决出唯一的获胜队伍为止。小R正在组织一个比赛,比赛中有。

像污秽一样的博客 1422

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

字符串的最大子串问题

基于字符串的最大子串问题是经常面试的问题,想要表现的好不但要会基础的方法,同时还要学会优化的算法。 常考的有两个问题: 1:两个字符串的最大公共子串(还可能是子序列) 2:同一个字符串中相同的最大子串问题 例如输入qweabcuwabcfw,输出结果为:重复字符串的长度3和位置4 一:求两个字符串的最大公共子串 #include&lt;iostream&gt; #...

runner668的博客 1万+

获取两个字符串中最大相同子串的实现

/** * 获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 * "abcwerthelloyuiodef" * "dvhellobnm" * 思路: * 1,将短的那个子串按照长度递减的方式获取到 * 2,将没获取到的子串去长串中判断是否包含, * 如果包含,已经找到!。 */ @Test public

jzpkzm的专栏 3846

Java练习之 获取两个字符串中最大相同子串

import org.junit.Test; import java.util.Arrays; /** * @author 大跳蚤 * @create 2020/11/29 * @describe 获取两个字符串中最大相同子串。比如: str1 = "abcwerthelloyuiodefabcdef";str2 = "cvhellobnm" 提示:将短的那个串进行长度依次递减的子串与较长的串比较。 */ public class StringDemo2 { //前

qq_45922060的博客 529

递归算法计算一个字符串中最大的连续字符个数

用递归算法计算一个字符串中最大的连续字符个数。  比如 aaabbcc 输出 3, aabbcc 输出 2,abc 输出 1  class BaiduTest { public static void main(String args[]) { System.out.println(test(0, "dasdhskjaaaauenduejsdleifnchfjfkkaaaafg"))

刘尚伟 1813

用递归算法计算一个字符串中最大的连续字符个数

题目大意:用递归算法计算一个字符串中最大的连续字符个数,比如aabbcc输出3,aabbcc输出2,abc输出1 思路:递归:当前和一个比较,相同就count+1,并更新max的值,不同就把count置1。调用本身:当前位置+1。 代码: #include #include using namespace std; int JJ(string str, int cur, i

lanximu的专栏 2084

算法:如何统计字符串中连续的重复字符个数

1.用递归的方法实现一个求字符串中连续出现相同字符的最多次数,例如‘a aabbcc’中连续出现‘a‘的次数为3,‘b’为2 2.代码如下: def getMaxDuppChar(s,startIndex,curMaxLen,maxLen): if startIndex == len(s)-1: return max(curMaxLen,maxLen) if list(s)[startIndex] == list(s)[startIndex + 1]: re

weixin_43697214的博客 3932

2013百度笔试 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2。

oqqNAME的专栏 1023

字符串删除游戏的最大操作数:从生活到算法的思维之旅

给定字符串s,我们定义函数f(s)为删除s所需的最大操作数。操作规则如下:直接删除整个字符串(计为1次操作)若存在i(1 ≤ i ≤ |s|/2),使得s[0:i] = s[i:2i],则可删除前i个字符,然后对剩余字符串继续操作目标:计算f(s)的最大可能值。

司徒鸿的博客 2163
上一篇: N个结点可构成多少不同的二叉树
下一篇: 有关复制构造函数的改错
rainyi2007
博客等级 码龄17年 16粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值