博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Count and Say
阅读量:6448 次
发布时间:2019-06-23

本文共 545 字,大约阅读时间需要 1 分钟。

    题意是n=1时输出字符串1;n=2时,数上次字符串中的数值个数,因为上次字符串有1个1,所以输出11;n=3时,由于上次字符是11,有2个1,所以输出21;n=4时,由于上次字符串是21,有1个2和1个1,所以输出1211。依次类推,写个countAndSay(n)函数返回字符串。

string unguarded_convert(const string &say)
{
stringstream ss;
int count = 0;
char last = say[0];
 
for (size_t i = 0; i <= say.size(); ++i)
{
if (say[i] == last)
{
++count;
}
else
{
ss << count << last;
count = 1;
last = say[i];
}
}
 
return ss.str();
}
 
string countAndSay(int n)
{
if (n <= 0) return string();
 
string say = "1";
 
for (int i = 1; i < n; ++i)
{
say = unguarded_convert(say);
}
 
return say;
}

转载地址:http://oaowo.baihongyu.com/

你可能感兴趣的文章
hbase scan客户端服务端流程
查看>>
java读取.txt文件的最后一行
查看>>
使用unisphere添加nas过程
查看>>
【看图识算法】这是你见过最简单的 “算法说明书”
查看>>
Oracle12C—用户概要文件profile日常操作
查看>>
windows_learn 004 ADDS基础知识和组策略
查看>>
学习笔记-5.2 shell编程1
查看>>
3-unit7 samba
查看>>
linux用户和文件目录管理
查看>>
ImportError: No module named items
查看>>
case做带选项的shell脚本以及结合while做交互选择的shell脚本的最基本写法
查看>>
Ubuntu安装ping工具
查看>>
nginx ssl证书配置
查看>>
第二课unit3 系统延迟及定时机制
查看>>
javascript OOP实例—探测器
查看>>
centos6.5下使用lnmp架构安装nextcloud云盘
查看>>
实现网站由http协议转为https协议
查看>>
linux中samba搭建及文件共享打印
查看>>
Oracle中可被并行化执行的SQL操作
查看>>
目标管理的感悟
查看>>