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