要求只用一个循环输出一个字符串中连续出现的字符,如字符串“aaabbaacccccee”则输出ccccc
开头以为你写好for(int i = 0 ; i < a.length(); i++){}此题只能用一个循环且如果字符串为“aaabbaaccccceeeee”的话要输出ccccc和eeeee
小弟考虑半天无解,希望各位大大们热心相助~~

解决方案 »

  1.   

    class LongestSubstring 
    {
    public static String[] longestSubstring(String s){
    int maxLength=1;//最长重复子串的长度
                    int subStringLen=1;//当前子串的长度
                    int startIndex=0;//当前子串的起始下标
    int[] startIndexs=new int[s.length()];
    int numSubstring=0;//最长重复子串的个数
    for(int i=0,j=1;i<s.length();i++,j++){
    if(j<s.length()&&s.charAt(i)==s.charAt(j))
    subStringLen++;
    else{
    if(subStringLen==maxLength){
    numSubstring++;
    startIndexs[numSubstring]=startIndex;
    }
    else if(subStringLen>maxLength){
    numSubstring=0;
    maxLength=subStringLen;
    startIndexs[numSubstring]=startIndex;
    }
                                    subStringLen=1;
    startIndex=j;
    }
    }
    String[] result=new String[numSubstring+1];
    for(int i=0;i<=numSubstring;i++)
                            result[i]=s.substring(startIndexs[i], startIndexs[i]+maxLength);
    return result;
    }
    public static void main(String[] args) 
    {
    String[] r=longestSubstring("aaabbaaccccceeeee");
    for(String s:r)
    System.out.println(s);
    }
    }
      

  2.   

    class LongestSubstring 

    public static String[] longestSubstring(String s){ 
    int maxLength=1;//最长重复子串的长度 
                    int subStringLen=1;//当前子串的长度 
                    int startIndex=0;//当前子串的起始下标 
    int[] startIndexs=new int[s.length()]; 
    int numSubstring=0;//最长重复子串的个数 
    for(int i=0,j=1;i <s.length();i++,j++){ 
    if(j <s.length()&&s.charAt(i)==s.charAt(j)) 
    subStringLen++; 
    else{ 
    if(subStringLen==maxLength){ 
    numSubstring++; 
    startIndexs[numSubstring]=startIndex; 

    else if(subStringLen>maxLength){ 
    numSubstring=0; 
    maxLength=subStringLen; 
    startIndexs[numSubstring]=startIndex; 

                                    subStringLen=1; 
    startIndex=j; 


    String[] result=new String[numSubstring+1]; 
    for(int i=0;i <=numSubstring;i++) 
                            result[i]=s.substring(startIndexs[i], startIndexs[i]+maxLength); 
    return result; 

    public static void main(String[] args) 

    String[] r=longestSubstring("aaabbaaccccceeeee"); 
    for(String s:r) 
    System.out.println(s); 


     
      

  3.   

    试下我这个
    public class Pd {
    public static void main(String[] args) {

    String a="aaa1bbaaccccceeeeeeee";
    char[] b=a.toCharArray();
    int c=1,d=0,k=0,o=0;
    for(int i = 0 ; i < b.length-1; i++){ 
    if(b[i]!=b[i+1]){
    d=c;
    System.out.println(b[i]+"  "+c);
    if(d>k){
    k=d;
    o=i;
    }
    c=1;
    }
    if(b[i]==b[i+1]){
    c++;
    }
    if(i+1==b.length-1){
    d=c;
    if(d>k){
    k=d;
    o=i;
    System.out.println(b[i]+"  "+c);
    }
    }

    System.out.println(b[o]+"**"+k); }}
      

  4.   

    这次格式应该对了!class LongestSubstring 

           public static String[] longestSubstring(String s){ 
                    int maxLength=1;//最长重复子串的长度 
                      int subStringLen=1;//当前子串的长度 
                      int startIndex=0;//当前子串的起始下标 
    int[] startIndexs=new int[s.length()]; 
    int numSubstring=0;//最长重复子串的个数 
    for(int i=0,j=1;i <s.length();i++,j++){ 
    if(j <s.length()&&s.charAt(i)==s.charAt(j)) 
    subStringLen++; 
    else{ 
    if(subStringLen==maxLength){ 
    numSubstring++; 
    startIndexs[numSubstring]=startIndex; 

    else if(subStringLen>maxLength){ 
    numSubstring=0; 
    maxLength=subStringLen; 
    startIndexs[numSubstring]=startIndex; 

    subStringLen=1; 
    startIndex=j; 


    String[] result=new String[numSubstring+1]; 
    for(int i=0;i <=numSubstring;i++) 
    result[i]=s.substring(startIndexs[i], startIndexs[i]+maxLength); 
    return result; 

    public static void main(String[] args) 

    String[] r=longestSubstring("aaabbaaccccceeeee"); 
    for(String s:r) 
    System.out.println(s);