給定某一長(zhǎng)度的字符串,請(qǐng)找出其中由相同字符連接而成的最長(zhǎng)字符串,
并已"字母,長(zhǎng)度"的形式返回。
比如"axxxbbbbxxxxxdd"其中由相同字符連接而成的最長(zhǎng)字符串為xxxxx,則返回"x,5".
如果出現(xiàn)由不同字符構(gòu)成的長(zhǎng)度相同的字符串,則返回先出現(xiàn)的。
比如"aaabbbcc",返回"a,3".
包名:無(wú)
類名:SequenceFinder
方法簽名:public String find(String message)
其中給定的message僅由字符'a'-'z'構(gòu)成,message長(zhǎng)度為1-40
class StringProcessing
{
static String getSubEqualString(String sourceString)
{
int stringLength=sourceString.length();//取得字符串的長(zhǎng)度。
//從最長(zhǎng)的子串(長(zhǎng)度為stringlength的子串)開始檢查,再檢查第二長(zhǎng)的子串
//(長(zhǎng)度為stringlength-1的子串),依次檢查到長(zhǎng)度為2的子串。
for(int i=1;i<stringLength;i++)
{
TESTNEXT:for(int j=1;j<=i;j++)//遍歷檢查所有長(zhǎng)度為(stringLength-i+1)的子串,
{
int subStart=j-1,subEnd=stringLength-i+1+subStart;//計(jì)算將進(jìn)行檢查的子串的起始位置和結(jié)束位置。
String tempString=sourceString.substring(subStart,subEnd);//取得將要檢查的子串。
for(int k=0;k<tempString.length()-1;k++)
{
//若相鄰的兩個(gè)字符不相等,則不符合要求,立即結(jié)束對(duì)此子串的檢查。
if(tempString.charAt(k)!=tempString.charAt(k+1)){continue TESTNEXT;}
}
return tempString;//若子串的所有字符都相同,則此子串就是我們要找的最長(zhǎng)相同子串。
}
}
return sourceString.substring(0,1);//如果沒有長(zhǎng)度為2的子串,則第一個(gè)字符就是最長(zhǎng)子串了。
}
}
{
static String getSubEqualString(String sourceString)
{
int stringLength=sourceString.length();//取得字符串的長(zhǎng)度。
//從最長(zhǎng)的子串(長(zhǎng)度為stringlength的子串)開始檢查,再檢查第二長(zhǎng)的子串
//(長(zhǎng)度為stringlength-1的子串),依次檢查到長(zhǎng)度為2的子串。
for(int i=1;i<stringLength;i++)
{
TESTNEXT:for(int j=1;j<=i;j++)//遍歷檢查所有長(zhǎng)度為(stringLength-i+1)的子串,
{
int subStart=j-1,subEnd=stringLength-i+1+subStart;//計(jì)算將進(jìn)行檢查的子串的起始位置和結(jié)束位置。
String tempString=sourceString.substring(subStart,subEnd);//取得將要檢查的子串。
for(int k=0;k<tempString.length()-1;k++)
{
//若相鄰的兩個(gè)字符不相等,則不符合要求,立即結(jié)束對(duì)此子串的檢查。
if(tempString.charAt(k)!=tempString.charAt(k+1)){continue TESTNEXT;}
}
return tempString;//若子串的所有字符都相同,則此子串就是我們要找的最長(zhǎng)相同子串。
}
}
return sourceString.substring(0,1);//如果沒有長(zhǎng)度為2的子串,則第一個(gè)字符就是最長(zhǎng)子串了。
}
}
public class tryequalstring
{
public static void main(String[] args)
{
System.out.println("aaabbbbbbcccddd"+":"+StringProcessing.getSubEqualString("aaabbbbbbcccddd"));
System.out.println("aaabbbcccdddeee"+":"+StringProcessing.getSubEqualString("aaabbbcccdddeee"));
System.out.println("abcdefghijklmno"+":"+StringProcessing.getSubEqualString("abcdefghijklmno"));
System.out.println("bbbbbbbbbbbbbbb"+":"+StringProcessing.getSubEqualString("bbbbbbbbbbbbbbb"));
}
}
{
public static void main(String[] args)
{
System.out.println("aaabbbbbbcccddd"+":"+StringProcessing.getSubEqualString("aaabbbbbbcccddd"));
System.out.println("aaabbbcccdddeee"+":"+StringProcessing.getSubEqualString("aaabbbcccdddeee"));
System.out.println("abcdefghijklmno"+":"+StringProcessing.getSubEqualString("abcdefghijklmno"));
System.out.println("bbbbbbbbbbbbbbb"+":"+StringProcessing.getSubEqualString("bbbbbbbbbbbbbbb"));
}
}
//運(yùn)行結(jié)果如下:
E:\java\ProgramJava\blog\io>javac tryequalstring.java
E:\java\ProgramJava\blog\io>java tryequalstring
aaabbbbbbcccddd:bbbbbb
aaabbbcccdddeee:aaa
abcdefghijklmno:a
bbbbbbbbbbbbbbb:bbbbbbbbbbbbbbb
E:\java\ProgramJava\blog\io>javac tryequalstring.java
E:\java\ProgramJava\blog\io>java tryequalstring
aaabbbbbbcccddd:bbbbbb
aaabbbcccdddeee:aaa
abcdefghijklmno:a
bbbbbbbbbbbbbbb:bbbbbbbbbbbbbbb