Giter VIP home page Giter VIP logo

Comments (3)

dljgs1 avatar dljgs1 commented on June 15, 2024

可以投机取巧取得非常快的速度……

  1. 生成30内的答案
    res = ["","1"]
    for i in range(2,31):
    num = res[i-1][0]
    ct = 0
    ans = ""
    for s in res[i-1]:
    if num == s:
    ct += 1
    else:
    ans += str(ct)+num
    num = s
    ct = 1
    if num is not None and ct>0:
    ans += str(ct)+num
    res.append(ans)
    import json
    print(json.dumps(res))

  2. 把答案复制到代码前,求解函数只需要一句话
    ans = …………
    class Solution:
    def countAndSay(self, n: int) -> str:
    return ans[n]

from blog.

LoneRanger66 avatar LoneRanger66 commented on June 15, 2024

一刷的代码:

class Solution {
    public String countAndSay(int n) {
        StringBuilder s = new StringBuilder("1");
        while (--n > 0) {
            StringBuilder tmp = new StringBuilder();
            for (int i = 0; i < s.length(); i++) {
                int count = 1;
                char c = s.charAt(i);
                while (i < s.length() - 1 && s.charAt(i + 1) == c) {
                    i++;
                    count++;
                }
                tmp.append(count).append(c);
            }
            s = tmp;
        }
        return s.toString();
    }
}

二刷的代码:

class Solution {
    public String countAndSay(int n) {
        String ans = "1";
        for (int i = 2; i <= n; i++) {
            ans = generate(ans);
        }
        return ans;
    }

    private String generate(String s) {
        StringBuilder sb = new StringBuilder();
        int count = 1;
        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) == s.charAt(i - 1)) {
                count++;
            } else {
                sb.append(count).append(s.charAt(i - 1));
                count = 1;
            }
        }
        sb.append(count).append(s.charAt(s.length() - 1));
        return sb.toString();
    }
}

from blog.

intbjw avatar intbjw commented on June 15, 2024

由前面的结果推后面的结果

class Solution:
    def countAndSay(self, n: int) -> str:
        def next_num(tmp):
            res = ""
            i = 0
            tmp_n = len(tmp)
            while i < tmp_n:
                count = 1
                while i < tmp_n - 1 and tmp[i] == tmp[i+1]:
                    count += 1
                    i += 1
                res += (str(count) + tmp[i])
                i += 1
            return res
        res = "1"
        for i in range(1, n):
            res = next_num(res)
        return res

from blog.

Related Issues (13)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.