问题描述:n=1,返回“1”;n=2,返回“11”;n=3,返回“21”;n=4,返回1211,。。。。

算法分析:和斐波那契数列道理差不多,都是后一个要依赖前一个元素。因此可以使用递归,也可以使用迭代。

递归算法:

 public String countAndSay(int n)
{
StringBuffer sb = new StringBuffer();
if(n <= 0)
return null; if(n == 1)
{
return "1";
} if(n >= 2)
{
String s = countAndSay(n-1);
int count = 1;
for(int i = 1; i < s.length(); i ++)
{
if(s.charAt(i) == s.charAt(i-1))
{
count ++;
}
else
{
sb.append(count);
sb.append(s.charAt(i-1));
count = 1;
}
}
sb.append(count);
sb.append(s.charAt(s.length()-1));
}
return sb.toString();
}

迭代算法:

 public String countAndSay(int n)
{ if(n <= 0)
{
return null;
}
String result = "1";
for(int i = 1; i < n; i ++)
{
StringBuffer sb = new StringBuffer();
int count = 1;
for(int j = 1; j < result.length(); j ++)
{
if(result.charAt(j) == result.charAt(j - 1))
{
count ++;
}
else
{
sb.append(count);
sb.append(result.charAt(j-1));
count = 1;
}
}
sb.append(count);
sb.append(result.charAt(result.length()-1));
result = sb.toString();
}
return result;
}

最新文章

  1. 《React Native入门与实战》读书笔记(1)
  2. sqlserver数据库 Schema
  3. webpack入坑之旅(一)不是开始的开始
  4. ACM:POJ 2739 Sum of Consecutive Prime Numbers-素数打表-尺取法
  5. Resource annotation is not supported on static fields
  6. Listview点击事件
  7. c# 简单的通用基础字典
  8. CentOS平台下为Python添加MongoDB支持PyMongo
  9. 【Kafka入门】Kafka基础结构和知识
  10. 【三支火把】---C文件学习
  11. Android(java)学习笔记141:SQLiteDatabase的query方法参数分析
  12. HDU 5903 Square Distance
  13. 【原创】有关Buffer使用,让你的日志类库解决IO高并发写
  14. 错误代码: 1248 Every derived table must have its own alias
  15. BZOJ_3747_[POI2015]Kinoman_线段树
  16. 牛客JS编程大题(二)
  17. 树莓派+tomcat+mysql安装及配置
  18. sigar获取Windows系统的硬件信息进行JAVA后台系统资源监控
  19. docker命名空间、控制组及联合文件系统概念
  20. springboot+mybatis整合(单元测试,异常处理,日志管理,AOP)

热门文章

  1. 记第一次破解js加密代码
  2. Go语言性能优化
  3. 巨蟒python全栈开发-第6天 is&amp;==
  4. Oracle重做日志REDO
  5. Tomcat 服务器介绍
  6. PyQuery的基本使用详解
  7. 我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能
  8. CAS单点登录实践(spring cas client配置)
  9. Redis的慢查询日志
  10. 17届计算机应届生秋季校招分享 to Tomorrow