Count and Say,统计并输出,利用递归,和斐波那契数列原理一样。
2024-09-04 11:44:08
问题描述: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;
}
最新文章
- 《React Native入门与实战》读书笔记(1)
- sqlserver数据库 Schema
- webpack入坑之旅(一)不是开始的开始
- ACM:POJ 2739 Sum of Consecutive Prime Numbers-素数打表-尺取法
- Resource annotation is not supported on static fields
- Listview点击事件
- c# 简单的通用基础字典
- CentOS平台下为Python添加MongoDB支持PyMongo
- 【Kafka入门】Kafka基础结构和知识
- 【三支火把】---C文件学习
- Android(java)学习笔记141:SQLiteDatabase的query方法参数分析
- HDU 5903 Square Distance
- 【原创】有关Buffer使用,让你的日志类库解决IO高并发写
- 错误代码: 1248 Every derived table must have its own alias
- BZOJ_3747_[POI2015]Kinoman_线段树
- 牛客JS编程大题(二)
- 树莓派+tomcat+mysql安装及配置
- sigar获取Windows系统的硬件信息进行JAVA后台系统资源监控
- docker命名空间、控制组及联合文件系统概念
- springboot+mybatis整合(单元测试,异常处理,日志管理,AOP)