Day 9

1.添加逗号 (pass)

添加逗号
模拟、字符串

1.1 解析

在这里插入图片描述

1.2代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//方法一:
int main()
{
    int n=0;
    cin>>n;
    string ret;
    int count=0;//计数
    while(n)
    {
        count++;
        ret+=to_string(n%10);
        n/=10;
        if(count%3==0) ret+=',';
    }
    //判断最后一个位置
    if(ret.back()==',') ret.pop_back();
    reverse(ret.begin(),ret.end());
    cout<<ret;
    return 0;
}

//方法二:
int main()
{
    string s;
    cin>>s;
    string ret;
    for(int i=0;i<s.size();i++)
    {
        ret+=s[i];
        if((s.size()-i-1)%3==0&&i!=s.size()-1) ret+=',';
    }
    cout<<ret;
    return 0;
}

2.跳台阶 (pass)

跳台阶
线性dp

2.1 解析

在这里插入图片描述

2.2 代码

int jumpFloor(int number) {
        //创建dp表
        vector<int> dp(number+1);
        //初始化
        dp[0]=1,dp[1]=1;
        //填表
        for(int i=2;i<=number;i++)
            dp[i]=dp[i-1]+dp[i-2];
        return dp[number];
    }

//优化:
int jumpFloor(int number) {
        int a=1,b=1;
        int c=1;
        int count=2;
        while(count<=number)
        {
            count++;
            a=b;
            b=c;
            c=a+b;
        }
        return c;
    }

3.扑克牌顺子 (pass)

扑克牌顺子
模拟

3.1 解析

在这里插入图片描述

3.2 代码

//方法一:模拟+排序
bool IsContinuous(vector<int>& nums) {
        int count=0;//统计0的个数
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size()-1;i++)
        {
            if(nums[i]==0) count++;
            else
            {
                if(nums[i+1]==nums[i]) return false;//出现重复
                if(nums[i+1]-nums[i]-1>count) return false;//相差的数个数,小于0的个数
                else 
                    count-=nums[i+1]-nums[i]-1;
            }
        }
        return true;
    }
//方法二:规律
class Solution {
    bool hash[14]={0};//统计是否出现过
public:
    bool IsContinuous(vector<int>& nums) {
        int maxval=0,minval=14;
        for(auto& x:nums)
        {
            if(x)
            {
                if(hash[x]) return false;//出现重复
                hash[x]=true;
                maxval=max(x,maxval);
                minval=min(x,minval);
            }
        }
        return maxval-minval<=4;
    }
};
要将 `month` 字段与 `day1` 到 `day31` 合并为 `YYYY-MM-DD` 格式,可以在查询中进行字符串拼接并转换为日期格式。以下是修改后的 SQL 查询: ```sql -- 获取当前年月 DECLARE @currentYearMonth VARCHAR(7); SET @currentYearMonth = FORMAT(GETDATE(), &#39;yyyy-MM&#39;); SELECT prolineid, MotorName, [month], DayNumber, DayValue, CONVERT(DATE, @currentYearMonth + &#39;-&#39; + RIGHT(DayNumber, LEN(DayNumber) - 3)) AS FullDate FROM ( SELECT prolineid, MotorName, [month], day1, day2, day3, day4, day5, day6, day7, day8, day9, day10, day11, day12, day13, day14, day15, day16, day17, day18, day19, day20, day21, day22, day23, day24, day25, day26, day27, day28, day29, day30, day31 FROM VPRP_ProPlan_JG WHERE prolineid = &#39;12&#39; AND MotorName IS NOT NULL AND MotorName NOT LIKE &#39;%发动机%&#39; AND MotorName NOT LIKE &#39;%高压%&#39; AND MotorName NOT LIKE &#39;%低压%&#39; AND [month] = @currentYearMonth ) AS SourceTable UNPIVOT ( DayValue FOR DayNumber IN ( day1, day2, day3, day4, day5, day6, day7, day8, day9, day10, day11, day12, day13, day14, day15, day16, day17, day18, day19, day20, day21, day22, day23, day24, day25, day26, day27, day28, day29, day30, day31 ) ) AS UnpivotTable; ``` 在上述查询中,通过 `CONVERT(DATE, @currentYearMonth + &#39;-&#39; + RIGHT(DayNumber, LEN(DayNumber) - 3))` 将 `month` 字段(存储在 `@currentYearMonth` 中)与 `DayNumber` 中的日期部分拼接成 `YYYY-MM-DD` 格式,并转换为日期类型,存储在 `FullDate` 列中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值