日期:2014-05-20  浏览次数:20728 次

求教字符串类型题目

5.找出字符串是最长的子串,要求子串中的所有字符都相同:如"asdfaahellobbsferheeer" 返回结果应该为eee;

------解决方案--------------------
Java code

package corejava.day01;

public class CheckLongString {
    
    public static void main(String[] args) {
        String test="AAAbbbcccdfg33333333333333ggegegeggdfffffffgdergeg";
        String result =getLongString(test);
        System.out.println(""+result);
    }
    private static String getLongString(String test) {
        int index =test.length();
        char begin =test.charAt(0);
        char last = 0 ;
        int beforenumber =0;
        int nownumber =1;
        for(int i=1;i<index;i++){
            if(begin==test.charAt(i)){
                nownumber++;
            }
            else{
                if(nownumber<beforenumber){
                    begin=test.charAt(i);
                    nownumber=1;
                    continue;
                    }
                last=begin;
                beforenumber=nownumber;
                begin=test.charAt(i);
                nownumber=1;
            }
        }
        StringBuffer ss =new StringBuffer();
        for(int i=0;i<beforenumber;i++){
            ss.append(last+"");
        }
        return ss.toString();
    }

}

------解决方案--------------------
for example
Java code
String s = "asdfaahellobbsferheeer";
StringBuilder buf = new StringBuilder();
String result = "";
int max = 0;
for (char c : s.toCharArray()) {
    if (buf.length() > 0) {
        if (buf.charAt(0) != c) {
            if (buf.length() > max) {
                max = buf.length();
                result = buf.toString();
            }
            buf.delete(0, buf.length());
        }
    }
    buf.append(c);
}
if (buf.length() > max) {
    result = buf.toString();
}
System.out.println(result);