for(int i=0;i<s.length()-1;i++)
  {     hIndex=i;
        length=1;
     while(s.charAt(i)==s.charAt(i+1))
     {
      lIndex=i+1;
      length++;
      if(i<s.length()-1)
          i++;
      else
      break;
     }
                     }
到底哪里越界啦???想不通啊

解决方案 »

  1.   

    没限定最大长度..
    看你的length变量.
    要不用用IDE的调试工具就会明白.
      

  2.   

    如果最后两个字符相同,那么就会越界
    因为在i=s.length()-2时,如果s.charAt(i)==s.charAt(i+1)成立,那么会在循环里i++一次,然后继续循环
    这时i=s.length()-1,i+1=s.length(),这个就越界了
      

  3.   

    while(s.charAt(i)==s.charAt(i+1))这一句之间加上
    if (i+1>= s.length) {
      continue;
    }
      

  4.   

    if(i<s.length()-1)
    i++;
    else
    break;这里你想做什么??
      

  5.   

    因为当2个字符不一样推出WHILE循环后head指针要指向i+1的位置所以要I++