java字符串中找出最大的“连续的” 子字符串”的长度。

例如:abijkabcd 则结果返回 abcd 长度为4。注意是一个字符串,连续的“字符串”而不是 数字串。

4个回答

public void calMaxLength() {

        String input = "adc";
        int max=0;
        int temp=1;

        /**
         * 对整个string进行遍历
         */
        for(int i=1;i<input.length();i++){
            char pre = input.charAt(i-1);
            char now = input.charAt(i);
            if(now-pre==1){//如果是连续字符串,长度加一
                temp++;
            }else{//如果不是连续的字符串,对之前连续的字符串长度进行判断,看是不是目前最长的,如果是则保存
                  //并且长度计算长度重新计为1
                max=(max>temp?max:temp);
                temp=1;
            }
        }
        //因为上面的程序没有对最后一次连续长度进行比较,所以在这里额外比较一次
        max=(max>temp?max:temp);

        //题目要求没有连续的输出0,即没有1这个说法,所以这里进行了判断
        System.out.println((max==1?0:max));

    }

上面的方法可以解决楼主的问题,而且时间复杂度是O(n),应该是最优的解法了。
手打代码&注释,思路已经在注释中说明了。

望采纳,如果有不合适可以继续交流

qq_36545800
高小冷 我说的连续指 abcd字母必须连续,如果输入qwertyasdf 则输出0. 而且是字符串中的字母,不是数字
接近 2 年之前 回复

字符串本质是字符数组,char和int可以互相转换,所以和数字串没什么区别的

public class StringUtil {
public static String[] lxString(String str) {
char[] chars = str.toCharArray();
List list = new ArrayList();
for (int i = 0; i < chars.length - 1;) {
System.out.println(i);
int a = chars[i + 1] - chars[i];
StringBuffer sb = null;
if (a == 1) {
// 正序
sb = new StringBuffer();
sb.append(chars[i]);
sb.append(chars[i + 1]);
for (int j = i + 1; j < chars.length - 1; j++) {
int b = chars[j + 1] - chars[j];
if (b == 1) {
sb.append(chars[j + 1]);
i = j + 1;
} else {
i++;
break;
}
}
list.add(sb.toString());
} else {
i++;
}

    }
    String[] strs = new String[list.size()];
    for (int i = 0; i < list.size(); i++) {
        strs[i] = list.get(i);
    }

    return strs;
}

public static void main(String[] args) {
    String[] strs = StringUtil.lxString("abcd1134456");
    for (String string : strs) {
        System.out.println(string);
    }
}

}

写的不好 可以参考一下

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
怎样找出最大连续子字符串?
怎样找出最大连续子字符串?rn
找出字符串中对称的子字符串的最大长度
闲来无事翻了翻之前的面试书,有一道题勾起了我的兴趣,题目如下: 输入一个字符串,输出该字符串中对称的子字符串的最大长度。 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 本文将给出该题的解法,深入浅出,详细讲解。
怎么找出最大连续出现的子字符串?
昨天问了的,还是无果,高手请加我QQ:75789214rn因这个有消息时我不知道,故请加我QQ:75789214
对称子字符串的最大长度
输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 提示:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。 int getMaxLenOfPalindrome(char *str, char* newstr) { int mx = 0, id, i = 0, s
Java字符串的最大长度
 String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了,2147483647; 又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。   所以,发送xml批量的需要在oracle数据库中用clob类型,而在java 端可以用String;     Result...
Java字符串中的子字符串查找
最近看《算法》这本书,看到一种简单直接的子字符串查找算法,暴力子字符串查找。代码:public class SubString { /** * 暴力子字符串查找 * * @param target * @param txt * @return */ public int findFirstIndex(String targ...
最大连续数字长度
问题来源: 点击打开链接 问题描述: Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the la
最大连续长度
最大连续长度 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给定一个只包含字母“A”和字母“B”的字符串,你的任务是写一个程序来计算并输出最长连续的“A”或“B”的个数。 输入   输入包含多组测试数据,每组数据只有一行为一个字符串,字符串的长度不超过1000。 输出   对于每组
Java字符串找出4个字节长度的字符
不解释,直接上代码:  由于Iteye代码贴四个字节的UTF-8字符出错,特能图的方式发布几个特殊字符:  Java代码   public class Byte4Check {          public static void main(String args[]) throws UnsupportedEncodingException {  
[一道笔试题]找出最连续数字的最大长度
如下,一串递增数字数组,如12244466666666,找出其中相同数字最长的长度。补全if中的内容,暂时没什么好想法,请大家帮忙~rnint find( int x[], int n)rnrn int length = 0;rn for (i=1;i
算法分析(不同字符的子字符串最大长度)
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;vector&gt; using namespace std; int lengthOfLongestSubstring(string s) { if (!s.size()) return 0; const char* cp = s.c_str();// 将s...
(java)leetcode-取最大长度子字符串
Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters.Examples:Given &quot;abcabcbb&quot;, the answer is &quot;abc&quot;, which the length is ...
从两个字符串中找出最大公共子字符串
从两个字符串(str_1,str_2)中找出最大公共子字符串(comString)的方法为: 选取长度较短的字符串(假设str_1较短)做截取; 从字符串中截取长度为1的子字符串; 每个子字符串都在str_2中做查询,查询到则将该字符串赋予comString; 从字符串中截取长度为2的子字符串,重复3; 从字符串中截取长度为n的子字符串,重复3; 结束。 截取字符串例子: 实例:
找出多个字符串中的最大公共子字符串,求指导
int main()rnrn int n = 0;rn printf("请输入字符串的个数");rn scanf("%d",&n);rn char a[n][100];rn for (int i=0; i
java字符串中找出最长连续(连续指abc这种连续)子串的的个数。
例如 abcghabcd 返回4, asdfqwerwer 这种返回0因为没有连续字母。用java实现
如何找出子字符串?
我有一字符串:123P258UYTP09,其中有2个P字母,我想得到第2个P字母在整个字符串的位置,以及2个P字母之间的子字符"258UYT",请问应该使用哪些字符串才能达到我要的结果?现在我只知道有P字母而已。
从一个字符串中找出最长连续子字符串,输出其长度、下标并打印出来
  今生第一次正式的面试献给了华为实习生招聘,考官没有问太多问题直接给我出了一道题。可惜紧张又不自信的我没有做出来,直接完蛋。。。趁着放假把遗憾补上吧。  题目是从一个字符串中找出最长连续子字符串,输出其长度、下标并打印出来,例如输入“abchijklmxs”就可以得到最长连续子串是“hijklm”,长度为6,从下标3开始。下面是本人写的代码,试了一下没问题。#include&amp;lt;iostrea...
计算重复字符串长度(请从字符串中找出至少重复一次的子字符串的最大长度)
请从字符串中找出至少重复一次的子字符串的最大长度 输入描述: 字符串,长度不超过1000 输出描述: 重复子串的长度,不存在输出0 示例1 输入 ababcdabcefsgg 输出 3 说明 abc为重复的最大子串,长度为3 解题思路:将字符串转换为字符数组,遍历数组找到相同的元素,然后继续判断接下来的还有几位字符是否相同。保存相同位数的个数,得到最大值。 import ...
头条面试题——找出最大的连续的子数组
对于n个元素,有正有负,输出最大的连续的子数组vector&amp;lt;int&amp;gt; findMaxSubstr(vector&amp;lt;int&amp;gt; arr) { vector&amp;lt;int&amp;gt; result; int n = arr.size(); if (n == 0) return result; if (n == 1) { result.push_back(arr[0]...
在数组内找出最大的5位连续数字
$arr= array(1,2,3,5,6,7,8,9,10,11,13,14,15,16,17,19,20,21,22); sort($arr); $len =count($arr); $max=[]; for ($i=0; $i &lt; $len; $i++) { if($i+5&lt;=$len){ $arrar =array_slice($arr,$i,5);...
js 正则找出最长连续子串长度
function maxLenStr(str){ var len = 0, max_len = 0; var reg = new RegExp("(.)\\1{1,}","g"); var res = reg.exec(str); while(res != null){ len = res[0].length; if(max_len <
百度笔试找出最大信号长度的方法
问题 数字计算机生成由0和1组成的二进制数据,数据中的最大信号M由在数据中连续出现的1或0的最大数目组成,但M不能再字符串的开头或者结尾,设计一种找出最大信号长度的方法。
最长子字符串的长度
&amp;lt;?php /** * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 * * @param $s *Array ( [a] =&amp;gt; 1 [b] =&amp;gt; 2 [d] =&amp;gt; 12 [e] =&amp;gt; 4 [r] =&amp;gt; 5 [f] =&amp;gt; 11 [s] =&amp;gt; 8 [t...
最大连续长度不超过m的子序列和
题目大意给定长度为n的序列,取出其中长度不超过m的连续一段,求最大题解ans=max{sum[i]−sum[j−1]}   (i>=j−1且1<=j−i+1<=m)ans=max\{sum[i]-sum[j-1]\}~~~(i>=j-1且1<=j-i+1<=m) 很明显这是O(N2)O(N^2)的暴力 对于位置i它前面sum[j-1]最小即可,也就是静态查询区间最小(ST表/线段树) 我们优化
最大子字符串(牛客网十九)
public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int max=-900; int sum=0; for(int i=0;i<array.length;i++) { if(sum<=0)
最大子字符串问题
问题描述:输入任意多个字符串。当输入exit时结束程序。输出最大的子字符串。要求:输入的字符串中,每个字符再次出现时记录其值,为该字符串长度。例如:输入字符串:abcad 则最大子字符串为:abca样例:        输入:abcabc        输出:abca                  bcab                  cabc       输入:abac       输...
求一个序列的最大连续长度
题目要求: 给定一个递增序列,求该序列的连续最大长度。 解题思路:依次遍历,当序列数字连续时,增加其长度,当不连续时,重新初始化长度,最终返回该序列的最大连续长度。#include<iostream> using namespace std;int getMaxSize(int* array,int length) { int count = 1; int
最大连续的相同字符的子串的长度
题目描述 有一个仅包含’a’和’b’两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个’a’设置为’b’,或者把一个’b’置成’a’);但是操作的次数有上限m,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长度是多少。 输入描述: 第一行两个整数 n , m (1&lt;=m&lt;=n&lt;=50000),第二行为长度为n且只包含’a’和’b’的字符串s。...
连续子数组的和为指定值的最大长度
连续子数组的和为指定值的最大长度 例如: arr = {3,4,1,7,8},和为15的最长子数组为{3,4,1,7} arr 3 4 1 7 8 sum 3 7 8 15 23 index 0 1 2 3 4 每次把(sum, i)存入一个map,当然sum不能被覆盖,每次遍历的时查找 sum-
leetcode寻找最大长度的连续数对
https://leetcode.com/problems/maximum-length-of-pair-chain/description/ Maximum Length of Pair Chain DescriptionHintsSubmissionsDiscussSolution Discuss Pick One You are given n pairs of numbers. In
二分 连续长度>=F的区间的最大平均值
题目链接:http://poj.org/problem?id=2018 题目大意:是在一个数组里,寻找一段连续和,使其平均和最大,但是长度不能小于F, 首先可以看出是满足单调性的,但是怎么二分呢, 我们先枚举一个可能的数。 然后数组里的值全部减去这个值(结果会有正有负),那么我们就看是否存一段长度大于等于F,且和为正。对于此的判断,可谓经典,见代码。 思考:是实数的二分。 注意: 1.结束二分的条...
求最大回文子字符串
求最大回文子串
怎样在一列中找出每种数据最大的连续出现个数?
例如:一个表,就一列a,n类型,有许多条记录,怎样找出相同数据的最大连续出现个数?下面的例子中,0最大连续个数是2个,1最大连续个数是3个,2和3没有连续的。谁能帮我解决?谢谢了!rnarn1rn1rn0rn1rn1rn1rn0rn0rn2rn3rn0
找出01数组中的0&&1连续的最大次数
如题,程序不报错,正常运行,但就是没结果。是没结果,黑屏。求解答rn[code=c]rn#include rnvoid calculate0and1();rnusing namespace std;rnrnvoid calculate0and1( char *str,int *max0,int *max1)rnrn int temp0 = 0;rn int temp1 = 0;rn while (*str)rn rn if (*str ==' 0')rn rn (*max0)++;rn if (*(++str) == '1')rn rn if (temp0 < *max0)rn rn temp0 = *max0; rn rn *max0 = 0;rn rn rn else if (*str == '1')rn rn (*max1)++;rn if (*(++str) == '0')rn rn if (temp1 < *max1)rn rn temp1 = *max1;rn rn *max1 = 0;rn rn rn rn *max0 = temp0;rn *max1 = temp1;rnrnint main()rnrn char string[] = "00001111001010101010101010001011101001010";rn int max0 = 0;rn int max1 = 0;rn calculate0and1(string, &max0, &max1);rn cout << max0 << max1 << endl;rn return 0;rnrn[/code]
找出01字符串中0和1连续出现的最大次数
代码 #include using namespace std; void Calculate(const char *str,int *max0,int *max1) { int temp0 = 0; //保存连续是‘0’的最大长度 int temp1 = 0; while(*str)
字符串------找出01串中o和1连续出现的最大次数
题目: 思路: 记录遍历中的最大值,与temp比较,并交换 代码: void Calculate(const char *str,int *max0,int *max1) { int temp0=0; //保存0串的最大长度 int temp1=0; //保存1串的最大长度 while(*str) { if(*str=='0') { ...
给一个数组,找出数组中最长的连续数列的长度
本题源自LeetCode ------------------------------------------------------------------------------------ 用hash表来解决这个问题,先初始化一个hash表, 存储所有数组元素, 然后遍历这个数组, 对找到的数组元素, 去搜索其相连的上下两个元素是否在hash表中, 如果在, 删除相应元素并增加此次查
在一个数组中找出和最大的连续几个数
原题: 在一个数组中找出和最大的连续几个数。(至少包含一个数)例如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.输入格式第一行输入一个不超过1000的整数n。第二行输入n个整数A[i]。输出格式第一行输出一个整数,表示最大的和。 ...
找出列表中的连续元素
比如:rn3,4,5,6,7,10,11,12,15,16,17,19,20,21,22,23,24,42,43,44,45,46rn怎么得到下面的结果呢?rn3,7,10,12,15,17,19,24,42,46
sql中找出连续的记录
表中 车牌号 经度 纬度 时间(表是按时间排序的)rn我要找出经度和纬度相同的时间差 注意 经度和纬度必须是连续相同的记录rn比如2,3条记录的经度和纬度相同 5,6条记录的经度和纬度也和2,3条相同rn 但是第4条记录不同 查询的结果应该是2,3条的时间差 和5,6条的时间差
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件