日期:2014-05-20 浏览次数:20710 次
public static void main(String[] args) { String s = "0111000111100"; char[] c = s.toCharArray(); int num = 1; int max = 1; for (int i = 1; i < c.length; i++) { if (c[i] == c[i - 1]) { num++; } else { max = Math.max(max, num); num = 1; } } System.out.println(max); }
------解决方案--------------------
public class Find01 { public static void main(String[] args) { String str="0111000111100"; String str1=str.replaceAll("11*"," "); String str2=str.replaceAll("00*"," "); String[] s0=str1.split(" "); String[] s1=str2.split(" "); int num0=0; int num1=0; for(int i=0;i<s0.length;i++) { if(num0<s0[i].length()) { num0=s0[i].length(); } } System.out.println("num0 is "+num0); for(int i=0;i<s1.length;i++) { if(num1<s1[i].length()) { num1=s1[i].length(); } } System.out.println("num1 is "+num1); } }
------解决方案--------------------
貌似这样也是可以的。。。。
package com.fenghua; public class FindZeroOne { /** * 此方法为仅有两个字符(可多次出现)返回出现次数最多的字符的次数 * @param str * @return */ public static int max01(String str){ int b1=1; int a1=0; char[] a=str.toCharArray(); for(int i=0;i<a.length-1;i++){ if(a[i]==a[i+1]){ b1++; }else{ a1=a1+b1; b1=a1-b1; a1=a1-b1; b1++; } } return Math.max(a1, b1); } public static void main(String[] args){ String str="01010101000000000111111"; System.out.println(max01(str)); } }
------解决方案--------------------
额 没看清楚需求。。。我检讨