算法通关村番外篇-LeetCode编程从0到1系列一

大家好我是苏麟 , 今天开始带来LeetCode编程从0到1系列 .

编程基础 0 到 1 , 50 题掌握基础编程能力

大纲

    • 1768.交替合并字符串
    • 389. 找不同
    • 28. 找出字符串中第一个匹配项的下标
    • 242. 有效的字母异位词
    • 459. 重复的子字符串
    • 283. 移动零
    • 66. 加一
    • 1822. 数组元素积的符号
    • 1502. 判断能否形成等差数列
    • 896. 单调数列
    • 13. 罗马数字转整数

1768.交替合并字符串

描述 :

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

题目 :

  1. 交替合并字符串

LeetCode : 交替合并字符串

在这里插入图片描述

代码 :

class Solution {public String mergeAlternately(String word1, String word2) {int m = word1.length(), n = word2.length();int i = 0, j = 0;StringBuilder ans = new StringBuilder();while (i < m || j < n) {if (i < m) {ans.append(word1.charAt(i));++i;}if (j < n) {ans.append(word2.charAt(j));++j;}}return ans.toString();}
}

389. 找不同

描述 :

给定两个字符串 s 和 t ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

题目 :
LeetCode 389. 找不同 :
找不同
在这里插入图片描述
分析 :
这道题用位运算还是比较好做的 .

代码 :

class Solution {public char findTheDifference(String s, String t) {int n = 0;int a = s.length();int b = t.length();for(int i = 0 ;i < a;i++){n ^= s.charAt(i);}for(int i = 0 ;i < b;i++){n ^= t.charAt(i);}return  (char) n;}
}

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

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

題目 :
LeetCode : 找出字符串中第一个匹配项的下标
在这里插入图片描述

偷懒的代码 :

class Solution {public int strStr(String haystack, String needle) {return haystack.indexOf(needle);}
}

暴力代码 :

class Solution {public int strStr(String haystack, String needle) {int n = haystack.length(), m = needle.length();for (int i = 0; i + m <= n; i++) {boolean flag = true;for (int j = 0; j < m; j++) {if (haystack.charAt(i + j) != needle.charAt(j)) {flag = false;break;}}if (flag) {return i;}}return -1;}
}

242. 有效的字母异位词

描述 :

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

题目 :

LeetCode 有效的字母异位词
在这里插入图片描述

代码 :

class Solution {public boolean isAnagram(String s, String t) {char[] arr = s.toCharArray();char[] brr = t.toCharArray();Arrays.sort(arr);Arrays.sort(brr);return new String(arr).equals(new String(brr));}
}

459. 重复的子字符串

描述 :

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

题目 :

LeetCode 重复的子字符串
在这里插入图片描述

代码 :

class Solution {public boolean repeatedSubstringPattern(String s) {return (s + s).indexOf(s,1) != s.length();}
}

283. 移动零

描述 :

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

题目 :

LeetCode 移动零
在这里插入图片描述
分析 :

这道题双指针就解决掉了 .

代码 :

class Solution {public void moveZeroes(int[] nums) {int n = nums.length;int left = 0;int right = 0;while(right < n){if(nums[right] != 0){swap(nums,left,right);left++;}right++;}Arrays.toString(nums);}public void swap(int[] arr,int a,int b){int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}
}

66. 加一

描述 :

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

题目 :
LeetCode 加一
在这里插入图片描述

代码 :

class Solution {public int[] plusOne(int[] digits) {int len = digits.length;for(int i = len - 1;i >= 0 ;i--){digits[i]++;digits[i] %= 10;if(digits[i] != 0){return digits;}}int[] arr = new int[len + 1];arr[0] = 1;return arr;}
}

1822. 数组元素积的符号

描述 :

已知函数 signFunc(x) 将会根据 x 的正负返回特定值:

如果 x 是正数,返回 1 。
如果 x 是负数,返回 -1 。
如果 x 是等于 0 ,返回 0 。
给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。

返回 signFunc(product) 。

题目 :

LeetCode 数组元素积的符号
在这里插入图片描述

代码 :

class Solution {public int arraySign(int[] nums) {int count = 1;for(int i = 0;i < nums.length;i++){if(nums[i] == 0){return 0;}else if(nums[i] < 0){count = -count;}}return count;}
}

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

描述 :

给你一个数字数组 arr 。

如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列

如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。

题目 :

LeetCode 判断能否形成等差数列

在这里插入图片描述

代码 :

class Solution {public boolean canMakeArithmeticProgression(int[] arr) {Arrays.sort(arr);int n = arr[1] -arr[0];for(int i = 0;i < arr.length - 1;i++){if(arr[i + 1] - arr[i] != n){return false;}    }  return true;}
}

896. 单调数列

描述 :

如果数组是单调递增或单调递减的,那么它是 单调 的。

如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= j,nums[i]> = nums[j],那么数组 nums 是单调递减的。

当给定的数组 nums 是单调数组时返回 true,否则返回 false。

题目 :

LeetCode 单调数列

在这里插入图片描述

代码 :

class Solution {public boolean isMonotonic(int[] nums) {int len = nums.length;return isAsc(nums,len) || isDesc(nums,len);}//升序public boolean isAsc(int[] nums,int len){for(int i = 0;i < len -1;i++){if(nums[i] > nums[i+1]){return false;}}return true;}//降序public boolean isDesc(int[] nums,int len){for(int i = 0;i < len -1;i++){if(nums[i] < nums[i+1]){return false;}}return true;}
}

13. 罗马数字转整数

描述 :
在这里插入图片描述

例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。

题目 :

LeetCode 罗马数字转整数

在这里插入图片描述
代码 :

class Solution {public int romanToInt(String s) {List<Integer> list = new ArrayList<>();for(int i = 0;i < s.length();i++){char temp = s.charAt(i);switch(temp){case 'I':list.add(1);break;case 'V':list.add(5);break;case 'X':list.add(10);break;case 'L':list.add(50);break;case 'C':list.add(100);break;case 'D':list.add(500);break;case 'M':list.add(1000);break;}}int num = 0;for(int i = 0;i < list.size();i++){int a = list.get(i);if(i < list.size() - 1 && a < list.get(i + 1)){num -= a;}else{num += a;}}return num;}
}

这期就到这里 , 下期见!

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

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

相关文章

Canopen学习笔记——sync同步报文增加数据域(同步计数器)

1.Canfestival同步报文sync的设置 在OD表中的配置如下&#xff1a; 如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文&#xff0c;这里要注意的就是&#xff0c;上面第一张图也提到了&#xff0c;时间单位是us。第二张图&#xff0c;我的0x1006就设置为0xF4240,也就…

Java面试之虚拟机

1、前言 本篇的面试题基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、什么是虚拟机&#xff1f; Java 虚拟机&#xff0c;是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。 Java 被设计成允许应用程…

LeetCode讲解篇之90. 子集 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个变量start表示当前从哪里开始遍历nums 搜索过程的数字组合加入结果集 从start开始遍历nums 如果当前元素和前一个元素相等&#xff0c;前一个元素没被使用&#xff0c;则触发剪枝去重操作&#xff0c;跳过当…

58.leetcode 最后一个单词的长度

一、题目 二、解答 1. 思路 分2种情况 第一种情况只有一个单词&#xff0c;不包含空格&#xff1a;这种情况直接返回单词本身的长度。第二种情况包含空格&#xff1a;先去掉首尾的空格&#xff0c;根据空格切割字符串生成一个字符串列表&#xff0c;返回倒数第一个索引位置字…

QT周五作业

题目&#xff1a;实现简单水果的价格重量计算 点击一次水果重量1 自动计算总价 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QListWidgetItem> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…

HarmonyOS@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化 上文所述的装饰器仅能观察到第一层的变化&#xff0c;但是在实际应用开发中&#xff0c;应用会根据开发需要&#xff0c;封装自己的数据模型。对于多层嵌套的情况&#xff0c;比如二维数组&#xff0c;或者数…

每日算法打卡:蚂蚁感冒 day 13

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例1&#xff1a;输出样例1&#xff1a;输入样例2&#xff1a;输出样例2&#xff1a; 题目分析示例代码 原题链接 1211. 蚂蚁感冒 题目难度&#xff1a;简单 题目来源&#xff1a;第五届蓝桥杯省赛C A/B组 题目描述…

echarts 3D地图

vueecharts 3D地图,可自定义地图背景底图。鼠标放上显示弹窗&#xff0c;弹窗自动切换。 <template><div id"gbznt" class"gbznt" ref"gbznt"><img class"mapBg" src"../../../img/propertyTransaction/echart-bg…

Django教程第2章| Web开发实战 |用户管理模块

前言 从第2章开始&#xff0c;我们正式以实战为核心开发用户管理系统&#xff0c;计划实现效果图所有模块功能。 本章我们将开始实现我们第一个功能模块&#xff1a;用户管理。 技术栈 Boostrap、jQuery、​​​Django 功能模块 模块进度功能点部门管理完成增删改查&…

nodejs+vue+ElementUi音乐分享社交网站77l8j

本文介绍的系统主要分为两个部分&#xff1a;一是前台界面&#xff1a;用户通过注册登录可以实现音乐播放、新闻浏览、留言评论等功能&#xff1b;另一个是后台界面&#xff1a;音乐网站管理员对用户信息进行管理&#xff0c;上传更新音乐资源&#xff0c;发布最新音乐资讯等功…

NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算

原文&#xff1a;5 Computing with Register Machines 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 我的目标是表明天堂机器不是一种神圣的生命体&#xff0c;而是一种钟表&#xff08;相信钟表有灵魂属性的人将制造者的荣耀归功于作品&#xff09;&#xff0c;因为…

debian12部署Gitea服务之二——部署git-lfs

Debian安装gitlfs: 先更新下软件包版本 sudo apt update 安装 sudo apt install git-lfs 验证是否安装成功 git lfs version cd到Gitea仓库目录下 cd /mnt/HuHDD/Git/Gitea/Repo/hu/testrepo.git 执行lfs的初始化命令 git lfs install客户机Windows端在官网下载并安装Git-Lfs 再…

Origin中将 x、y 轴设置为等长度

---------------------------------------------------------------------- 记录一个画图小技巧&#xff1a; 如何在 Origin 中等轴画图 第一步&#xff1a;起初画出来的图如下&#xff0c;y 轴长于 x 轴 第二步&#xff1a;点击画板的空白处&#xff0c;任意一个地方即可 第…

第十六章 i18n国际化

第十六章 i18n国际化 1.什么是i18n国际化2.i18n国际化三要素介绍3.i18n国际化基础示例4.通过请求头实现国际化5.通过语言类型选择实现国际化6.通过JSTL标签库fmt实现国际化 1.什么是i18n国际化 2.i18n国际化三要素介绍 3.i18n国际化基础示例 如果我要准备一个国际化的信息&…

Web3的应用发展及其影响

Web3&#xff0c;又被称为去中心化Web&#xff0c;是互联网发展的一个阶段&#xff0c;其核心特点是数据的去中心化和用户自主权。近年来&#xff0c;随着区块链技术的不断成熟&#xff0c;Web3的应用也得到了广泛的关注和发展。在这篇文章中&#xff0c;我们将深入探讨Web3目前…

猫狗大战(猫狗识别)

1.问题简介 1.1问题描述 在这个问题中&#xff0c;你将面临一个经典的机器学习分类挑战——猫狗大战。你的任务是建立一个分类模型&#xff0c;能够准确地区分图像中是猫还是狗。 1.2预期解决方案 你的目标是通过训练一个机器学习模型&#xff0c;使其在给定一张图像时能够准…

Open3D对产生偏差的点云数据进行校正

由于相机安装问题&#xff0c;导致点云数据两边翘起来&#xff0c;为了计算把翘起来的部分拉平整 import time import open3d as o3d; import numpy as np; import matplotlib.pyplot as plt from scipy.signal import find_peaks import pandas as pdOriginalPly o3d.io.rea…

【代码随想录04】24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 142. 环形链表 II

24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 做题思路 可以设置虚拟头结点cur和画图…

MySQL 从零开始:05 MySQL 数据类型

文章目录 1、数值类型1.1 整形数值1.2 浮点型数值1.3 布尔值 2、日期和时间类型3、字符串类型3.1 CHAR 和 VARCHAR3.2 BINARY 和 VARBINARY3.3 BLOB 和 TEXT3.4 ENUM 类型3.5 SET 类型 4、空间数据类型5、JSON 数据类型5、JSON 数据类型 前面的讲解中已经接触到了表的创建&…

跟着cherno手搓游戏引擎【5】layer(层)

编写基类层&#xff1a; Layer.h:提供Attach链接、Detach解绑、Update刷新、Event事件、GetName方法 #pragma once #include"YOTO/Core.h" #include"YOTO/Event/Event.h" namespace YOTO {class YOTO_API Layer{public:Layer(const std::string& nam…