取出一个字符串中连续有相同字母的最大个数及该字母,例:
字符串:aaaddxxxxxxxdddxxx
返回值:x,7
如果最大位数有多个,则反回第一个,例:
字符串:aaabbb
返回值:a,3
字符中取值范围(a-z)和(A-Z)之间,且最大字符位数为40;我的程序:
public class Letter
{
    public String find(String message)
    {
        String letter;
        int num = 0;
        for (int i=0;i<message.length();i++)
        {
            int n = 0;
            for(int j=i;j<message.length();j++)
            {
                if(message[j]=message[i])
                {
                    n ++ ;
                }
            }
            if(n > num)
            {
                num = n;
                letter = message[i];
            }
        }
        return (letter+","+num);
    }
    public static void main(String args[])
    {
        Letter l = new Letter();
        String s = l.find("dddaaadddd");
        System.out.println(s);
    }
}错误提示:
Letter.java:12: array required, but java.lang.String found
                if(message[j]=message[i])
                          ^
Letter.java:12: array required, but java.lang.String found
                if(message[j]=message[i])
                                     ^
Letter.java:20: array required, but java.lang.String found
                letter = message[i];
                                ^
3 errors===================================================================
字符串不能当数组来操作吗?
另外取值范围那个要求是不是我也要写?如果要写该怎么实现这个方法?

解决方案 »

  1.   

    if(message[j]=message[i])
    这句话改为
    if(message[j]==message[i])
    你再试一下
      

  2.   

    改了好几个地方
    另外这样的算法效率太低了,比如说你发现第1-第3个字符相同而第4个不同,就应该直接跳到第4个开始比较啊,这是建议,我只是按照你的思路作了修改
    public class Letter
    {
        public String find(String message)
        {
            char letter=' ';
            int num = 0;
            for (int i=0;i<message.length();i++)
            {
                int n = 0;
                for(int j=i;j<message.length();j++)
                {
                    if(message.charAt(j)==message.charAt(i))
                    {
                        n ++ ;
                    }else break;
                }
                if(n > num)
                {
                    num = n;
                    letter = message.charAt(i);
                }
            }
            return (letter+","+num);
        }
        public static void main(String args[])
        {
            Letter l = new Letter();
            String s = l.find("dddaaadddd");
            System.out.println(s);
        }
    }
      

  3.   

    to: sunxutx(孤云挂月) 
    纯粹笔误,笔试时写的是==to:zebra007(呼呼)
    谢谢,你的程序我调试过了,没有问题
    是不是字符串不能当数组来操作?记得以前说字符串就是数组的,难道那只适用于C,而不适用于JAVA吗?
      

  4.   

    public String getLongestChar(String s )
    {
    //遍历s
           int len[] = new int[s.length()];
           len[0] = 0;
           for (int i=1;i<s.length();i++)
             {
                   if(s.charAt (i)==s.charAt(i-1))
                      len[i] = len[i-1]+1;
       else
      len[i] = 0;
             }
    //找最长字符
         int temp = len[0];
       int index = 0;
           for (int i=1;i<s.length();i++)
    {
    if(len[i] > temp)
    {
    temp = len[i];
    index = i;
    }
        }
    return s.charAt(index)+","+String.valueOf(temp+1);
    }
      

  5.   

    是的,你也可以用String类的toCharArray()方法得到一个char类型的数组来进行操作
    比如说char[] ca=message.toCharArray();
      

  6.   

    楼主试试我的程序啊,不止查找单个字母,可查找任意字符串
    ----------------------------
    public class Letter {
    private String src;
    public Letter(String src){
    this.src = src;
    }

    public int find(String str){
    String tmp1 = src;
    String tmp2 = new String();
    int max=0;
    int tmp=0;
    do{
    tmp2 = tmp1.replaceFirst("("+str+")"+"+", "");
    tmp = (tmp1.length() - tmp2.length())/str.length();
    if(max<tmp)
    max = tmp;
    tmp1 = tmp2;
    }while(tmp != 0);

    return max;
    }

    public static void main(String args[]){
    System.out.println(new Letter("abcabcddddaacdcd").find("cd"));
    }
    }
      

  7.   

    谢谢楼上的各位只是“字符中取值范围(a-z)和(A-Z)之间,且最大字符位数为40”
    这个功能我要怎样实现?
      

  8.   

    public String string(String s) {// aaaddxxxxxxxdddxxx
            int i = 0; //工作指针
            int j = 0; //结果,即为次数
            char temp; //临时字符
            char result = ' '; //结果字符
            for (int begin = 0; begin < s.length(); begin++) {
                temp = s.charAt(begin);
                if (begin + 1 == s.length())
                    break;
                if (temp == s.charAt(begin + 1)) {
                    i++;
                } else {
                    if (i > j){
                        j = i + 1;
                        result = temp;
                    }
                    i = 0;
                }
            }
            return (result+", "+j);
        }请大家指正
      

  9.   

    public class Letter {
    public String find(String str){
    String return_value="";
    int max_num=0;
    int temp_num=1;
    if(str.length()<40){
    System.out.println("the length is:"+str.length());
    for(int i=0;i<str.length()-1;i++){
    if((str.charAt(i)>'a'&&str.charAt(i)<'z')||(str.charAt(i)>'A'&&str.charAt(i)<'Z')){
    if(str.charAt(i)==str.charAt(i+1)){
    temp_num++;
    }else{
    temp_num=1;
    }
    if(temp_num>max_num){
    max_num=temp_num;
    return_value=String.valueOf(str.charAt(i));
    }
    }else{
    return "字符不在范围(a-z)和(A-Z)之间";
    }
    }
    return return_value+","+String.valueOf(max_num);
    }else{
    return "最大字符位数大于40";
    }

    }
    public static void main(String[] args) {
    Letter lt = new Letter();
    String find_result=lt.find("TGGGDFGFGGG");
    System.out.println("结果是:"+find_result);

    }
    }
      

  10.   

    public String getSubstring(String insert){
      String resurt="";
      char []c=null;
      char d;
      String a;
      String b;
      c=insert.toCharArray();
    a=String.valueOf(c[0]);
    b=a;
      for(int j=1;j<c.length;j++){
      if(c[j-1]==c[j]){
      a+=String.valueOf(c[j]);
      
      }
    else{
    a=String.valueOf(c[j]);
    }
      if(a.length()>b.length()){
      b=a;
      resurt=b;
      }  
      }
      
      return resurt;
       
      }
    改一下应该可以
      

  11.   

    凑个热闹public class Letter
    {
        public String find(String message)
        {
            char c = '\0';
            int max_count = 0;
            for (int i=0; i<message.length(); )
            {
                for (j=i+1; j<message.length(); j++)
                {
                    if (message.charAt(i)!=message.charAt(j)) {break;}
                }
                if (j-i > max_count) 
                {
                     c = message.charAt(i);
                     max_count = j-i;
                }
                i = j;
            }
            return (c + "," + max_count);
        }
        public static void main(String args[])
        {
            Letter l = new Letter();
            String s = l.find("dddaaadddd");
            System.out.println(s);
        }
    }
      

  12.   

    是不是应该这样啊
    public class AA {

    public static char getLength(String s) {
    int n=0;  //相同字符的临时数
    int num = 0; //连续字符最多数
    char c = s.charAt(0);
    char r = ' ';
    for(int i=0;i<s.length();i++) {
    if(s.charAt(i)==c) {
    n++;
    }
    else {
    n = 1;
    }
    c = s.charAt(i);
    if(n>num) {
        num = n;
        r = s.charAt(i);
    }
    System.out.println(c+"  --  "+n);
    }
    return r;
    }

    public static void main(String[] args) {
    String s = "aadfdddddddddddsdsdsdsdfffffff";
    String r = InvestStr(s);
    System.out.println(r);

    }
    }
    测试好像是对的,不知道和你的要求不合
      

  13.   

    简单一些:
    public String maxReplyChar(String source){
    int[] charInt = new int[256];
    int max=-1;
    char maxChar=0;

    for(int i=0;i<source.length();i++){
    char curChar = source.charAt(i); 
    if(++charInt[curChar] > max){
    max=charInt[curChar];
    maxChar=curChar;
    }
    }
    return maxChar + "," + max;
    }
      

  14.   

    JAVA Language Specification
    char [] is not string
      

  15.   

    public class Letter {
    public String Letter(String str) {
    String falseStr = "字符中取值范围(a-z)和(A-Z)之间,且最大字符位数为40";
    int maxLen = str.length();
    char[] strs = str.toCharArray();
    int max = 0;
    char maxChar = 0;
    for (int i = 0; i < str.length() - 1; i++) {
    int n = 0;
    for (int j = i; j < str.length(); j++) {
    if ((!('a' <= strs[i] && strs[i] <= 'z'))
    && (!('A' <= strs[i] && strs[i] <= 'Z'))&&(str.length()>40)) {
    return falseStr;
    }
    if (strs[i] == strs[j]) {
    n++;
    }
    if (strs[i] != strs[j]) {
    break;
    }
    }
    if (n > max) {
    max = n;
    maxChar = strs[i];
    }
    }
    return maxChar + "," + max;
    }
    public static void main(String[] args) {
    String aa = "aa";
    char[] strs = aa.toCharArray();
    // aa.length();
    Letter letter = new Letter();
    System.out.println(letter.Letter(aa));
    System.out.println(aa.length());
    // System.out.println(strs[0]);
    }
    }
      

  16.   

    超级笑话 偷情照片一个已婚男人一日在办公室,突然有个陌生男子来访.... 
    陌生男子说:"上个礼拜,你带着你的女秘书南下偷情,对不对??" 
    已婚男人说:"干你什么事!" 
    陌生男子此时掏出一大迭照片后说:"全部的过程都被我偷拍下来了,你打算怎么办....?? 
    已婚男人将照片逐一看过后说:"好吧!!.....我全部加洗一张!!"如果觉得笑话,不错,又有兴趣赚钱的好友。可以去看看!
    谢谢支持上网,挣钱两不误,也许你听说过,但是未必你试过,
    特点:1 全自动,只要挂机后最小化就行,
          2 这是一个新网站,注册人数还不多,比较容易发展下线,大家要抓住机会
          3 最小化后屏幕上什么都没有,真正一点都没有影响
          4 放心,绝对不是病毒!是病毒我不是人!
          5 免费一试,绝对没任何损失,反而很可能有很大的收获哦。
          只要到http://www.8qu.net/register.asp?net=zengzhengliang注册后,下载tongbao.exe挂机就可以赚RMB也可以换Q币,跟挂QQ差不多,最小化后就不用管它了,点数自动会增加的。使用前,务必看一下通宝的使用方法。
      

  17.   

    public class FindChar {    private char maxChar;
        private int  maxCount;
        private char [] chars;
        
        public FindChar(String str){
            chars = str.toCharArray();
            maxCount = 0;
        }
        
        public void find(){
            if(chars.length == 0){
                System.out.println("String len is 0 !");
                return;
            }
            maxChar = chars[0];
            maxCount = 1;
            if(chars.length == 1){
                return;
            }
            int temp = 1;
            for(int i = 1;i<chars.length;i++){
                if(chars[i] == chars[i-1]){
                    temp++;
                    if(temp>maxCount){
                        maxChar = chars[i-1];
                        maxCount = temp;
                    }
                }
                else{
                    temp = 1;    
                }
            }
            System.out.println("maxChar = "+maxChar+" , maxCount = "+maxCount);
        }
        
        public static void main(String[] args) {
            FindChar str = new FindChar("acacaa");
            str.find();
        }
    }