Leetcod编程基础0到1-基础实现内容(个人解法)(笔记)

news2024/9/22 3:47:22

以下为个人解法,欢迎提供不同思路

1768. 交替合并字符串

题目:给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾,返回 合并后的字符串 。

个人思路:我的思路是先比较字符串长度,如果相等则每次都添加二者字符串一个字符,如不相等,则找到最小的字符串长度n,然后每次都添加二者字符串一个字符直到长度n,最后把最长的字符串剩下的都添加到新字符串

class Solution
{
public:
	string mergeAlternately(string word1, string word2)
	{
		string new_word;
		if (word1.size() == word2.size())
		{
			for (int i = 0; i < word1.size(); i++)
			{
				new_word += word1[i];
				new_word += word2[i];
			}
			return new_word;
		}
		if (word1.size() > word2.size())
		{
			int i = 0;
			for (i = 0; i < word2.size(); i++)
			{
				new_word += word1[i];
				new_word += word2[i];
			}
			for (; i < word1.size(); i++)
			{
				new_word += word1[i];
			}
			return new_word;
		}

		if (word1.size() < word2.size())
		{
			int i = 0;
			for (i = 0; i < word1.size(); i++)
			{
				new_word += word1[i];
				new_word += word2[i];
			}
			for (; i < word2.size(); i++)
			{
				new_word += word2[i];
			}
			return new_word;
		}
		return new_word;
	}
};

在这里插入图片描述

389. 找不同

题目:给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。

个人思路:我的思路是先通过sort排序,然后再遍历字符串找出不同

class Solution {
public:
    char findTheDifference(string s, string t) {
        int i = 0;
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        for (i = 0; i < s.length(); i++) {
            if (t[i] != s[i]) {
                return t[i];
            }
        }
        return t[i];
    }
};

在这里插入图片描述

学习到的新的思路:可以将二者字符串的ASCII码值相减即可得到答案
class Solution {
public:
    char findTheDifference(string s, string t) {
        int as = 0, at = 0;
        for (char ch: s) {
            as += ch;
        }
        for (char ch: t) {
            at += ch;
        }
        return at - as;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/find-the-difference/solutions/525705/zhao-bu-tong-by-leetcode-solution-mtqf/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

28. 找出字符串中第一个匹配项的下标

题目:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

个人思路:可以运用到string容器内的find函数来查找下标。

class Solution {
public:
    int strStr(string haystack, string needle) {
        if (needle.empty()) {
            return 0;
        }
        size_t pos = haystack.find(needle);
        if (pos != string::npos) {
            return pos;
        }
        return -1;
    }
};

在这里插入图片描述

242. 有效的字母异位词

题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

个人思路:我的思路是先sort排序然后判断两个字符串是否相等,因为字母和次数都相等,所有我觉得用sort要好

class Solution {
public:
    bool isAnagram(string s, string t) 
    {
        if (s.length() == t.length()) 
        {
            int i = 0;
            sort(s.begin(), s.end());
            sort(t.begin(), t.end());
            if(s ==t)
                return true;
        } 
        else
            return false;
        return false;    
    }   
};

在这里插入图片描述

459. 重复的子字符串

题目:给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

个人思路:我的思路是遍历所有可能的子串长度,对于每个长度,如果该长度能整除字符串长度,则提取对应的子串并重复构建一个与原字符串等长的新字符串,最后比较这两个字符串是否相等

class Solution
{
public:
    bool repeatedSubstringPattern(string s)
    {
        int n = s.length();
        if (n < 2)
        {
            return false;
        }

        
        for (int len = 1; len <= n / 2; ++len)
        {
            
            if (n % len == 0)
            {
                string sub = s.substr(0, len);
                string repeated;
                for (int i = 0; i < n / len; ++i)
                {
                    repeated += sub;
                }
                if (repeated == s)
                {
                    return true;
                }
            }
        }
        return false;
    }
};

在这里插入图片描述

283. 移动零

题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。

个人思路:我的思路是创建一个int类lastNonZeroFoundAt记录不是0的位置,如果不为则加一,为0不动,最后再数组末尾填充lastNonZeroFoundAt个0

class Solution 
{
public:
    void moveZeroes(vector<int>& nums) 
    {
        int lastNonZeroFoundAt = 0;
       
        for (int i = 0; i < nums.size(); i++) 
        {
            if (nums[i] != 0) 
            {
                nums[lastNonZeroFoundAt++] = nums[i];
            }
        }

      
        for (int i = lastNonZeroFoundAt; i < nums.size(); i++) 
        {
            nums[i] = 0;
        }
    }
};

在这里插入图片描述

66. 加一

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

个人思路:从末尾开始遍历数组,如果最低为不为9,则加一返回即可,如果最低位位9,则使最低位位0再次遍历即可,当然还得处理全为9情况,我们只要在开通添一个1即可

class Solution 
{
public:
    vector<int> plusOne(vector<int>& digits) 
    {

        int n = digits.size();
        for (int i = n - 1; i >= 0; i--)
        {
            if (digits[i] < 9)
            {
                digits[i]++;
                return digits;
            }
            digits[i] = 0;

        }
        digits.insert(digits.begin(), 1);
        return digits;
    }
};

在这里插入图片描述

1822. 数组元素积的符号

题目:已知函数 signFunc(x) 将会根据 x 的正负返回特定值:如果 x 是正数,返回 1 如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。返回 signFunc(product) 。

个人思路:为了防止整数越界,所以当数组元素如果大于0,则为1,小于0则为-1,等于0则为0,然后用sum乘等于数组即可得出答案

class Solution 
{
public:
    int arraySign(vector<int>& nums) 
    {
        int n = nums.size();
        int sum = 1;
        for (int i = 0; i < n; i++)
        {
            if (nums[i] > 0)
                nums[i] = 1;
            else if (nums[i] == 0)
                nums[i] = 0;
            else
                nums[i] = -1;
            sum *= nums[i];
        }
        if (sum > 0)
            return 1;
        else if (sum == 0)
            return 0;
        else
            return -1;
    }
};

在这里插入图片描述

1502. 判断能否形成等差数列

题目:给你一个数字数组 arr 。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false

class Solution 
{
public:
    bool canMakeArithmeticProgression(vector<int>& arr) 
    {
        sort(arr.begin(), arr.end());
        int n = arr[1] - arr[0];
        for (int i = arr.size() - 1; i > 0; i--)
        {
            if (arr[i] - n != arr[i - 1])
            {
                return false;
            }
        }
        return true;
    }
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

凹凸纹理概念

1、凹凸纹理 纹理除了可以用来进行颜色映射外&#xff0c;另外一种常见的应用就是进行凹凸映射。凹凸映射的目的是使用一张纹理来修改模型表面的法线&#xff0c;让我们不需要增加顶点&#xff0c;而让模型看起来有凹凸效果。原理&#xff1a;光照的计算都会利用法线参与计算&…

winform 大头针实现方法——把窗口钉在最上层

平时我们再使用成熟的软件的时候&#xff0c;会发现有个大头针的功能挺不错的。就是点一下大头针&#xff0c;窗口就会钉住&#xff0c;一直保持在最上面一层&#xff0c;这样可以一边设置参数&#xff0c;一边观察这个窗口里面的变化&#xff0c;比较方便。下面我就来简单实现…

进阶SpringBoot之首页和图标定制

idea 快捷键&#xff1a; ctrl shift "" 使缩起来的代码展开 ctrl shitf "-" 使代码缩起 WebMvcAutoConfiguration.class&#xff1a;可以看到需要有一个 index.html 文件映射到首页 private Resource getIndexHtmlResource(Resource location) {tr…

关于SpringMVC的一点学习笔记

关于SpringMVC的一点学习笔记 1、 maven依赖/目录结构2、配置文件3、从前端请求开始4、Controller5、Service6、Dao7、mybatis8、utils公共类9、 分页查询 QueryPageBean / PageResult10、静态页面Freemarker用在经常访问但不经常变化的页面场景中11、Reids12、Echarts13、认证…

后台管理权限自定义按钮指令v-hasPermi

第一步:在src下面建立一个自定义指令文件,放自定义指令方法 permission.js文件: /*** v-hasPermi 操作权限处理*/import store from "/store";export default {inserted(el, binding) {const { value } binding;//从仓库里面获取到后台给的数组const permission s…

软件设计之MySQL(2)

软件设计之MySQL(2) 此篇应在JavaSE之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 Navicat可以在软件管家下载 使用navicat连接mysql数据库创建数据库、表、转储sql文件&#xff0c;导入sql数据 学习内容&#xff1a; 基础的SELECT语…

数据分析:宏基因组数据的荟萃分析

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 介绍 宏基因组数据的荟萃分析是一种综合多个独立宏基因组研究结果的方法&#xff0c;目的是揭示不同人群或样本中微生物群落的共同特征和差异。这种方法特别适用…

ubantu安装python3.10

1.从官网下载安装 1.1安装依赖 sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev1.2从官网下载源文件 wget https://www.python.org/ftp/pyth…

设计资讯 | 巴黎 2024 年奥运会“另一个自我”以 DAB 汽车定制电动摩托车的形式亮相

巴黎 2024 年奥运会运动作为定制电动摩托车 DAB Motors 融入了2024 年巴黎奥运会的精神&#xff0c;通过其定制电动摩托车诠释了奥运会的五环。这些车辆由其服务部门 DAB Custom Studio (DCS) 提供&#xff0c;颜色编码与奥运五环一样。每种颜色代表一项运动&#xff1a;蓝色代…

RobotFramework框架+Selenium实现UI自动化测试(十六)

学习目录 1 UI自动化测试 2安装RF框架所需的 robotframework-seleniumlibrary包 1&#xff09; robotframework-seleniumLibrary版本说明 2&#xff09; robotframework-selenium2Library版本说明 3 selenium介绍 3.1 配置操作系统环境支持使用selenium打开浏览器 3.2 s…

「OC」简单网络请求的实现

「OC」简单网络请求的实现 文章目录 「OC」简单网络请求的实现写在前面URL和API网络请求的流程网络申请数据解析参考文章 写在前面 在暑假最后一个项目天气预报之中&#xff0c;使用了网络请求&#xff0c;虽然说还是不太理解网络请求之中的相关内容&#xff0c;以及在写天气预…

傻瓜式一步到位Mysql 8.0 密码修改

5.7之前修改密码语句 update user set authentication_string password(“root”) where user “root”; mysql 5.7.9以后废弃了password字段和password()函数&#xff1b;并在user表加了authentication_string:字段表示用户密码 #进入到mysql 安装目录下 #停止 mysql 服务 …

低碳环保测试知识问答活动

全国生态日&#xff0c;倒计时1天。为了组织这场关于“低碳环保测试知识问答”主题的线上知识竞赛&#xff0c;我们历经从活动方案策划到落地答题小程序上线。 一、活动背景 通过举办此次知识竞赛&#xff0c;旨在提高公众对低碳环保的认识和参与度&#xff0c;推广低碳生活方…

网络协议七 应用层 DNS协议 和 DHCP协议 这两个都了解就好

应用层常见的协议 1. DNS 协议 了解 将baidu.com 解析成具体IP的协议 实际上可以理解为&#xff1a;客户端 通过 DNS 协议 和 DNS 服务器进行交互&#xff0c;将域名转换成IP 2. DHCP 协议 了解 从DHCP 服务器自动获取IP地址

P1305 新二叉树

题目&#xff1a; 洛谷传送门&#xff1a;P1305 新二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int n,ans; char root; struct node{char nod,r,l; }a[100000]; void dfs(char idx){cout<…

Erupt 项目搭建

创建Spring Boot项目 Maven依赖 Spring Boot版本为 2.7.10&#xff0c;erupt版本为 1.12.14 erupt版本要与Spring Boot版本适配&#xff0c;3.x.x版本Spring Boot暂不适用说是 <properties><erupt.version>1.12.14</erupt.version></properties> <…

全场景——(三)USB开发基础(1)

文章目录 一、USB 系统硬件框架和软件框架1.1 实验现象1.2 硬件框架1.3 软件框架 二、USB 电气信号2.1 USB 设备状态切换图2.2 硬件线路2.3 电子信号2.4 低速/全速信号电平2.5 高速信号电平2.6 设备连接与断开2.6.1 连接2.6.2 断开 2.7 复位2.8 设备速率识别2.8.1 低速/全速2.8…

【STM32】入门教程(完整版汇总非常详细)

本教程参考b站江协科技STM32入门教程&#xff0c;视频链接&#xff1a; 哔哩哔哩江协科技STM32入门教程https://www.bilibili.com/video/BV1th411z7sn/?spm_id_from333.337.search-card.all.click “唯一能持久的竞争优势是胜过竞争对手的学习能力。”——盖亚斯 希望对您有帮…

栈的定义及基本操作

栈的定义和特点 栈是一个特殊的线性表&#xff0c;是限定在一端进行插入和删除操作的线性表&#xff1b; 插入到栈顶称作入栈&#xff08;PUSH) 从栈顶删除最后一个元素称作出栈 &#xff08;POP&#xff09; 图1 栈的表示 假设三个元素a,b,c入栈顺序为a&#xf…

【洛谷/水滴题解】[NOIP2005 普及组] 采药

1.难度&#xff1a;普及- 2.类型&#xff1a;dp&#xff0c;01背包 3.描述&#xff0c;输入输出格式&#xff0c;样例&#xff1a; 4.AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int t,m; int dp[1005]; int main() {ios::sync_with_stdio(false…