Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 重复字符的最长子串_String_Matlab - Fatal编程技术网

String 重复字符的最长子串

String 重复字符的最长子串,string,matlab,String,Matlab,我有一个学校作业,在作业中,给定一个完全由0和1组成的输入字符串,我必须返回重复1的最长子字符串的长度。我不被允许使用,我很难充实我的想法。 到目前为止,我已经找到了输入字符串的长度,并将输入字符串转换为uint8。这样我就可以用find来找到这些元素的索引。我的下一个想法是做一些for循环来存储索引,或者检查每个子集的长度,只保存最长的一个?但我不知道该怎么做,或者这是否是正确的思考方式。非常感谢您的指导。您可以为此使用正则表达式: [s,e] = regexp(inputString,'(1

我有一个学校作业,在作业中,给定一个完全由0和1组成的输入字符串,我必须返回重复1的最长子字符串的长度。我不被允许使用,我很难充实我的想法。
到目前为止,我已经找到了输入字符串的长度,并将输入字符串转换为uint8。这样我就可以用find来找到这些元素的索引。我的下一个想法是做一些for循环来存储索引,或者检查每个子集的长度,只保存最长的一个?但我不知道该怎么做,或者这是否是正确的思考方式。非常感谢您的指导。

您可以为此使用正则表达式:

[s,e] = regexp(inputString,'(1+)');
maximumSequenceLength = max(e-s+1);
如果要查找任何字符的最长子字符串,请使用以下动态正则表达式,该表达式表示:“获取一个字符。尽可能多地匹配此字符”


inputString(s)
返回每个子字符串的第一个元素。

既然您只需要1的最大长度,我想您可以在一次遍历字符串中完成它,获取一个累积和,但清除为零,并记住最大值。您不允许使用什么?@DaveX按Dave说的做。它应该是大约10行代码。您需要一个变量,用于:(1)字符串中的当前位置(2)自上次遇到0以来,到目前为止看到的1s数;(3)到目前为止遇到的最长1s序列的长度。
   [s,e] = regexp(inputString,'(.)((??$1*))');