打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
LeetCode之Count and Say

1、题目

The count-and-say sequence is the sequence of integers with the first five terms as following:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.

Given an integer n, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

Example 1:

Input: 1
Output: "1"

Example 2:

Input: 4
Output: "1211"

Exapmle

// 1 1
// 2 11
// 3 21
// 4 1211
// 5 111221
  // 6 312211
// 7 13112221
 
 


2、代码实现

public class Solution {
public String returnLast(String s) {
if (s == null || s.length() == 0)
return null;
String result = "";
int length = s.length();
if (length == 1) {
return "1" + s;
}
int count = 1;
int init = s.charAt(0);
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i) == s.charAt(i - 1)) {
count++;
if (i == length - 1) {
char ss = s.charAt(i - 1);
result = result + count + s.charAt(i - 1);
}
} else {
char ss = s.charAt(i - 1);
result = result + count + s.charAt(i - 1);
count = 1;
if (i == length - 1) {
result += ("1" + s.charAt(i));
}
}
}
return result;
}
    public String countAndSay(int n) {
    if (n <= 0)
    return null;
    if (n == 1) 
    return "1";
    else {
    return returnLast(countAndSay(n - 1));
    }
    }
}

 
 

 


3、总结

1、用递归方法
2、我们递归的时候,先实现默认包含字符串,如何得到下一个字符串,这也是我们需要把每次得到的结果递归,所以,我们先写个函数简单实现从这个字符串如果得到下一个字符串
3、我们在写递归公共函数的实现时候,要注意,末尾和数字前一位是否相同和不同的情况。
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【算法千题案例】每日一练LeetCode打卡——103.亲密字符串
258 [LeetCode] Find the Difference 寻找不同
java字符串反转相关算法
由字符串反转(使用递归)引申出来一道Java面试题
Trie树的分析和理解
551,回溯算法解分割回文串
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服