C/C++每日一练(20230415)

这篇具有很好参考价值的文章主要介绍了C/C++每日一练(20230415)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C/C++每日一练(20230415)

目录

1. 交错字符串  🌟🌟

2. 最短回文串  🌟🌟

3. 分段函数计算  ※

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 交错字符串

给定三个字符串 s1s2s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。

两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:

  • s = s1 + s2 + ... + sn
  • t = t1 + t2 + ... + tm
  • |n - m| <= 1
  • 交错 是 s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1 + s1 + t2 + s2 + t3 + s3 + ...

提示:a + b 意味着字符串 a 和 b 连接。

示例 1:

C/C++每日一练(20230415)

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出:true

示例 2:

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出:false

示例 3:

输入:s1 = "", s2 = "", s3 = ""
输出:true

提示:

  • 0 <= s1.length, s2.length <= 100
  • 0 <= s3.length <= 200
  • s1s2、和 s3 都由小写英文字母组成

以下程序实现了这一功能,请你填补空白处内容:

```c++
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
static bool isInterleave(char *s1, char *s2, char *s3)
{
    int i, j;
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    int len3 = strlen(s3);
    if (len1 + len2 != len3)
    {
        return false;
    }
    bool *table = malloc((len1 + 1) * (len2 + 1) * sizeof(bool));
    bool **dp = malloc((len1 + 1) * sizeof(bool *));
    for (i = 0; i < len1 + 1; i++)
    {
        dp[i] = &table[i * (len2 + 1)];
    }
    dp[0][0] = true;
    for (i = 1; i < len1 + 1; i++)
    {
        dp[i][0] = dp[i - 1][0] && s1[i - 1] == s3[i - 1];
    }
    for (i = 1; i < len2 + 1; i++)
    {
        ____________________;
    }
    for (i = 1; i < len1 + 1; i++)
    {
        for (j = 1; j < len2 + 1; j++)
        {
            bool up = dp[i - 1][j] && s1[i - 1] == s3[i + j - 1];
            bool left = dp[i][j - 1] && s2[j - 1] == s3[i + j - 1];
            dp[i][j] = up || left;
        }
    }
    return dp[len1][len2];
}
int main(int argc, char **argv)
{
    if (argc != 4)
    {
        fprintf(stderr, "Usage: ./test s1 s2 s3\n");
        exit(-1);
    }
    printf("%s\n", isInterleave(argv[1], argv[2], argv[3]) ? "true" : "false");
    return 0;
}
```

出处:

https://edu.csdn.net/practice/25658351

代码:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

static bool isInterleave(char *s1, char *s2, char *s3)
{
    int i, j;
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    int len3 = strlen(s3);
    if (len1 + len2 != len3)
    {
        return false;
    }
    bool *table = (bool*)malloc((len1 + 1) * (len2 + 1) * sizeof(bool));
    bool **dp = (bool**)malloc((len1 + 1) * sizeof(bool *));
    for (i = 0; i < len1 + 1; i++)
    {
        dp[i] = &table[i * (len2 + 1)];
    }
    dp[0][0] = true;
    for (i = 1; i < len1 + 1; i++)
    {
        dp[i][0] = dp[i - 1][0] && s1[i - 1] == s3[i - 1];
    }
    for (i = 1; i < len2 + 1; i++)
    {
		dp[0][i] = dp[0][i - 1] && s2[i - 1] == s3[i - 1];
    }
    for (i = 1; i < len1 + 1; i++)
    {
        for (j = 1; j < len2 + 1; j++)
        {
            bool up = dp[i - 1][j] && s1[i - 1] == s3[i + j - 1];
            bool left = dp[i][j - 1] && s2[j - 1] == s3[i + j - 1];
            dp[i][j] = up || left;
        }
    }
    return dp[len1][len2];
}

int main()
{
	char *s1 = (char*)"aabcc";
	char *s2 = (char*)"dbbca";
	char *s3 = (char*)"aadbbcbcac";
	printf(isInterleave(s1,s2,s3) ? "true" : "false");

	return 0;
}

输出:

true


2. 最短回文串

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

示例 1:

输入:s = "aacecaaa"
输出:"aaacecaaa"

示例 2:

输入:s = "abcd"
输出:"dcbabcd"

提示:

  • 0 <= s.length <= 5 * 10^4
  • s 仅由小写英文字母组成

出处:

https://edu.csdn.net/practice/25658352

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    string shortestPalindrome(string s)
    {
        string rev(s);
        reverse(rev.begin(), rev.end());
        string combine = s + "#" + rev;
        vector<int> lps(combine.length(), 0);
        int remove = getLPS(combine, lps);
        string prepend = rev.substr(0, rev.length() - remove);
        return prepend + s;
    }
    int getLPS(string s, vector<int> &lps)
    {
        int j = 0, i = 1;
        while (i < s.length())
        {
            if (s[i] == s[j])
            {
                lps[i] = j + 1;
                i++;
                j++;
            }
            else
            {
                if (j != 0)
                {
                    j = lps[j - 1];
                }
                else
                {
                    lps[i] = 0;
                    i++;
                }
            }
        }
        return lps[lps.size() - 1];
    }
};

int main()
{
	Solution s;
	cout << s.shortestPalindrome("aacecaaa") << endl;
	cout << s.shortestPalindrome("abcd") << endl;

	return 0;
}

输出:

aaacecaaa
dcbabcd


3. 分段函数计算

编程输入实数x,计算下面函数的值,并输出y的值,并输出y的值;

x^2      x<1
x-1      1≦x≦10
x/5      x>10

出处:

https://edu.csdn.net/practice/25658353

代码:

# include<stdio.h>
# include<stdlib.h>
int main(void)
{
    float x,y;
    printf("请输入x的值:\n");
    scanf("%f",&x);
    if(x<1)
    {
        y = x * x;
    }
    else if(x<=10)
    {
        y=3*x-1;
    }
    else
    {
        y= x / 5;
    }
    printf("y的值为:%f\n",y);
    system("pause");
    return 0;
}

输出:


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/文章来源地址https://www.toymoban.com/news/detail-414028.html

C/C++每日一练(20230415)

Golang每日一练 专栏

C/C++每日一练(20230415)

Python每日一练 专栏

C/C++每日一练(20230415)

C/C++每日一练 专栏

C/C++每日一练(20230415)

Java每日一练 专栏

到了这里,关于C/C++每日一练(20230415)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java每日一练(20230416)

    目录 1. 三数之和  🌟🌟 2. 基本计算器  🌟🌟🌟 3. 通配符匹配  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个包含  n  个整数的数组  nums ,判断  nums  中是否存在三个元素  a,b,c , 使得 

    2023年04月16日
    浏览(41)
  • Pyhon-每日一练(1)

    🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:Aileen_0v0🧸—CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:Aileen_0v0🧸

    2024年02月07日
    浏览(45)
  • Java每日一练(20230406)

    目录 1. 翻转二叉树  🌟 2. 接雨水  🌟🌟 3. 求平均值、最大值  ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 翻转一棵二叉树。 示例: 输入: 输出: 出处: https://edu.csdn.net/practice/24851844 代码: 输出: 4  2 7 

    2023年04月09日
    浏览(83)
  • 力扣、每日一练:爬楼梯

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。 1 阶 + 1 阶

    2024年02月11日
    浏览(48)
  • Python每日一练(20230427)

    目录 1. 三数之和  🌟🌟 2. 编辑距离  🌟🌟🌟 3. 翻转字符串里的单词  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个包含  n  个整数的数组  nums ,判断  nums  中是否存在三个元素  a,b,c ,

    2024年02月01日
    浏览(31)
  • Java每日一练(20230504)

    目录 1. 位1的个数  🌟 2. 移除元素  🌟 3. 验证二叉搜索树  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为

    2024年02月03日
    浏览(38)
  • C++ 每日一练

    突然想起了C++,很久没用过了,python真香,为了做个正经程序人,捡起来练练。就用csdn的每日一练试试。 要代码效率就用C++,要码代效率就用python。 `提示:2023年4月5号清明节的每日一练。 描述:小Q的柠檬汁做完了。 掏出了自己的数字卡牌。 想要和别人做数字游戏。 可是

    2023年04月09日
    浏览(42)
  • Python每日一练(20230419)

    目录 1. N皇后 II  🌟🌟🌟 2. 迷宫问题(递归)  🌟🌟🌟 3. 体操比赛成绩统计  ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 n 皇后问题  研究的是如何将  n  个皇后放置在  n×n  的棋盘上,并且使皇后彼此之间

    2023年04月19日
    浏览(35)
  • 力扣、每日一练:回文数

    给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入:x = 121 输出:true 示例 2: 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是

    2024年02月11日
    浏览(39)
  • Python每日一练(20230408)

    目录 1. 两数相除  🌟🌟 2. 分割回文串  🌟🌟 3. x 的平方根  🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给定两个整数,被除数  dividend  和除数  divisor 。将两数相除,要求不使用乘法、除法和 mod 运算符。

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包