• 字符串的最大重复数 小强斋


    题目:编写递归算法求最大重复数,比如"aaabbcc"的最大重复数为3,"aab"最大重复数为2

    import junit.framework.TestCase;
    
    public class RepeatTimes1 extends TestCase {
    
    	// 判断一个字符在某个字符串中出现的次数
    	public int existsTimes(String str, char c) {
    		int count = 0;
    		for (int i = 0; i < str.length(); i++) {
    			if (str.charAt(i) == c)
    				count++;
    		}
    		return count;
    	}
    
    	// 递归 求字符串中最大的重复数
    	public int repeatTimes(String str) {
    		if (str== null||"".equals(str)) return 0;
    		if (str.length() == 1)
    			return 1; // 字符串长度为1时,最大重复数肯定为1
    		else {
    			int time1 = repeatTimes(str.substring(1));// 子串的重复数
    			int time2 = existsTimes(str.substring(1), str.charAt(0));// 字符串首字母在子串出现的次数
    
    			if (time2 < time1) // 字符串首字母在子串出现的次数小于子串的重复数
    				return time1;
    			else
    				return time2 + 1; // 字符串首字母在子串出现的次数大于子串的重复数
    
    		}
    	}
    	
    	public void test() {
    		System.out.println(repeatTimes("1232"));
    	}
    
    }
    

    非递归方法

    //非递归方法
     public int repeatTimes(String str) {
      if (str== null||"".equals(str)) return 0;
      if (str.length() == 1)
       return 1; // 字符串长度为1时,最大重复数肯定为1
      int c[] =new int[256];
      for (int i = 0; i < str.length(); i++) {
       c[str.charAt(i)]++;
      }
      
      int max=c[0];
      for (int i = 0; i < c.length; i++) {
       if(c[i]>c[0]) max=c[i];
      }
      return max;
     }	
    



     

  • 相关阅读:
    JS之AJAX篇FormData对象
    JS之AJAX进度事件
    JS之BOM篇navigator对象
    JS之AJAX响应解码
    JS之AJAXXHR对象
    SAP NetWeaver平台介绍
    图解SSIS批量导入Excel文件(转)
    SQL Server 2008安装图解(转)
    实施BI应该如何找准切入点?
    如何修改SQL SA密码
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5429429.html
Copyright © 2020-2023  润新知