[38] Count and Say

1. 题目描述

The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 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 sequence.

Count and Say的串从1开始,首先将1读为11,之后将11读为21,将21读为1211,将1211读为111221,依次类推,求出第n个串,n=1时,为1。

2. 解题思路

一开始读错题了,以为是随意给一个数,之后将这个数读出来。后来发现不是这样的O.O…题目的意思是,从1开始重复读,先读1,然后读1产生的结果,然后继续往后读下去,返回第n个结果。那么一开始写的Code1也不是没有用,可以在Code1的基础上改进一下。Code1相当于,读1轮产生的数,那么Code2只需要将上一次读的内容作为下一次的输入即可。Code1大体的思路为对于一个数111221,使用一个当前值保存上一个的值,如果不相等,就输出上一个的值和上一个值得个数,且改变当前的值,如果相等就为当前值的计数加1。需要注意的是读到最后一串的时候跟后面的比较会越界,所以最后一串需要单独输出。Code2的思路为将Code1作为中间的一部分,使用一个循环套起来,每一次的结果作为上一次的输入。

3. Code

// Code1:以为参数int是给定的一个随意的数,把这个数的编码计算出来即可。。
import java.lang.StringBuffer;

public class Solution {
    public String countAndSay(int n) {
        // 将int转换为String
        String giveNum = String.valueOf(n);
        // 获取字符串长度
        int length = giveNum.length();
        int number = 1;  // 保存一轮的个数
        StringBuffer sb = new StringBuffer();
        for(int i = 0, j = i + 1; j < length; ++j)
        {
            if(giveNum.charAt(i) != giveNum.charAt(j))
            {
                // 遇到第一个不重复的字符
                sb.append(number).append(giveNum.charAt(i));
                i = j;
                number = 1;
            }else{
                number++;
            }
        }
        // 最后一串字符,j越界
        sb.append(number).append(giveNum.charAt(length-1));
        return sb.toString();
    }
}
// Code2:
import java.lang.StringBuffer;

public class Solution {
    public String countAndSay(int n) {
        if(n <= 0) return "";
        String s = "1";
        // 做n轮
        for(int i = 1; i < n; ++i)
        {
            StringBuffer sb = new StringBuffer();
            // 获取字符串长度
            int length = s.length();
            int number = 0;  // 保存一轮的个数
            char cur = s.charAt(0);
            for(int j = 0; j < s.length(); ++j){
                if(cur != s.charAt(j))
                {
                    // 遇到第一个不重复的字符
                    sb.append(number).append(cur);
                    cur = s.charAt(j);
                    number = 1;
                }else{
                    number++;
                }
            }
            // 最后一串字符,j越界
            sb.append(number).append(s.charAt(length-1));
            s = sb.toString();
        }
        return s;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: This error message usually occurs in MySQL when you are trying to insert data into a table and the number of columns in your SQL statement doesn't match the number of values you are trying to insert. For example, let's say you have a table with three columns: "id", "name", and "age". If you execute an INSERT statement like this: ``` INSERT INTO my_table (id, name) VALUES (1, 'John'); ``` You will get the error message "Column count doesn't match value count" because you are only providing two values but there are three columns in the table. To fix this error, you need to make sure that the number of columns in your SQL statement matches the number of values you are trying to insert. In the above example, you could fix the error by either providing a value for the "age" column or by removing it from the SQL statement if it is not necessary. ``` INSERT INTO my_table (id, name, age) VALUES (1, 'John', 30); ``` Alternatively, you could modify your table to have a default value for the "age" column, which would allow you to omit it from your INSERT statement: ``` ALTER TABLE my_table MODIFY COLUMN age INT DEFAULT 0; INSERT INTO my_table (id, name) VALUES (1, 'John'); ``` ### 回答2: "Column count doesn't match value count at row 1" 是 MySQL 数据库的一个错误提示,它表示在插入或更新数据时,给定的列与值的数量不匹配。 该错误通常出现在以下情况下: 1. 插入语句中列与值的数量不一致。例如,表定义了5列,但插入语句只提供了4个值,或者提供了多余的值。 2. 更新语句中SET子句中列与值的数量不匹配。例如,更新语句指定了5列,但SET子句却只提供了4个值,或者提供了多余的值。 3. 在使用INSERT INTO...SELECT语句时,选择的列与插入的值的数量不匹配。例如,选择了5列进行插入,但SELECT语句返回了6列。 要解决这个错误,需要检查以下几点: 1. 确保插入或更新语句中的列与提供的值的数量一致,且顺序正确。 2. 检查是否有额外的列或值,确保只提供了需要的列和值。 3. 对于使用INSERT INTO...SELECT语句的情况,确保选择的列与返回的值的数量一致。 例如,如果有一个表格包含3列(id、name、age): - 以提供2个值的方式插入数据是错误的:INSERT INTO table_name (id, name) VALUES (1, 'John'); - 提供多余的值也是错误的:INSERT INTO table_name (id, name, age) VALUES (1, 'John', 20, 'Male'); - 如果使用INSERT INTO...SELECT语句,确保选择的列与返回的值的数量一致。 总之,要解决"Column count doesn't match value count at row 1"错误,需要检查插入或更新语句中的列与值的数量是否匹配,并确保没有额外的列或值。 ### 回答3: 该错误提示是因为MySQL中列的数量与插入值的数量不匹配,导致无法插入或更新数据表的行。 出现这个错误的原因可能有以下几种情况: 1. 插入或更新数据库表时,指定的列数量与插入或更新的值的数量不一致。例如,插入或更新了5个值,但是只指定了4个列名,或者反之。需要确保指定的列与值的数量一致。 2. 数据表的列有默认值,但是没有指定要插入或更新的列,或者与默认值数量不一致。在使用INSERT或UPDATE语句插入或更新数据时,必须指定要插入或更新的列名和相应的值。 3. 数据表的列使用了自动增长属性(如主键),但是插入或更新时仍然指定了该列,导致数量不匹配。使用自动增长属性的列,应该省略该列的插入或更新。 解决这个错误可以采取以下措施: 1. 检查插入或更新语句中的列名和值的数量是否一致,确保相符。 2. 根据需要指定或排除默认值,确保与数据库表的列相匹配。 3. 如果使用了自动增长属性的列,确保插入或更新语句省略该列,让数据库自动生成。 总之,该错误是因为插入或更新语句中指定的列数量与值的数量不匹配,根据情况调整语句中列的数量或值的数量即可解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值