当前位置: 首页 > news >正文

Leedcode刷题——2 字符串

注:以下代码均为c++

1. 反转字符串

在这里插入图片描述

void reverseString(vector<char>& s) {int n = s.size();int i, j;for(i = 0, j = n - 1; i < j; i++, j--){swap(s[i], s[j]);}}

2. 整数反转

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

int reverse(int x) {int rev = 0;while(x != 0){if(rev < INT_MIN / 10 || rev > INT_MAX / 10)return 0;int digit = x % 10;x = x / 10;rev = rev * 10 + digit;}return rev;
}

3. 字符串中的第一个唯一字符

在这里插入图片描述
思想:哈希表

int firstUniqChar(string s) {unordered_map<char, int> hash;int i;/*for(i = 0; i < s.size(); i++){if(hash.count(s[i]) == 0)hash[s[i]] = 1;elsehash[s[i]]++;}*/for(i = 0; i < s.size(); i++) {hash[s[i]]++;  //哈希表默认value值为0,可以直接++,不用像上面一样先赋值再加。}for(i = 0; i < s.size(); i++){if(hash[s[i]] == 1)return i;}return -1;
}

4. 有效的字母异位词

在这里插入图片描述
思路:哈希表

bool isAnagram(string s, string t) {unordered_map<char, int> maps, mapt;int i;if(s.size() != t.size())return false;for(i = 0; i < s.size(); i++){maps[s[i]]++;mapt[t[i]]++;}if(maps == mapt)return true;elsereturn false;
}

5. 验证回文串

在这里插入图片描述

bool isPalindrome(string s) {int i, j;int n = s.size();for(i = 0, j = n - 1; i < j; i++, j--){  //注意for循环内部需要判断i < j//找到下一个字母或数字while(i < j && isalnum(s[i]) == 0)  //isalnum()判断是否为字母和数字i++;//找到前一个字母或数字while(i < j && isalnum(s[j]) == 0)j--;if(i < j && tolower(s[i]) != tolower(s[j]))return false;}return true;
}

6. 字符串转换整数

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

int myAtoi(string s) {int i = 0, n = s.size();int symbol = 1;  // +int num = 0;//1 判断空格while(i < n && s[i] == ' ')i++;//2 判断正负if(i < n && s[i] == '-'){symbol = -1;  // -i++;}else if(i < n && s[i] == '+')i++;//3 若非数字返回0if(i < n && !isdigit(s[i]))return 0;//4 若为数字,越界处理要注意,这个地方好坑啊。。。while(i < n && isdigit(s[i])){if(num > INT_MAX/10  || (num == INT_MAX/10 && s[i]-'0' > INT_MAX % 10))return symbol == 1 ? INT_MAX: INT_MIN;elsenum = num * 10 + (s[i] - '0');i++;}return symbol * num;
}

7. 实现strStr()

在这里插入图片描述
思路:
字符串匹配问题
法1:暴力法

int strStr(string haystack, string needle){int i = 0, j = 0;int n = haystack.size(), m = needle.size();while(i < n && j < m){if(haystack[i] == needle[j]){i++;j++;}else{  //若不匹配,退回,从上一次匹配的下一个开始i = i - j + 1;j = 0;}if(j == m)return i - j;}return -1;
}

法2:kmp算法

vector<int> build_next(string needle){int m = needle.size();vector<int> next;next.push_back(0);int prefix_len = 0;  //当前共同前后缀的长度int i = 1;while(i < m){if(needle[prefix_len] == needle[i]){prefix_len++;next.push_back(prefix_len);i++;}else{if(prefix_len == 0){next.push_back(0);i++;}elseprefix_len = next[prefix_len - 1];}}return next;
}
int strStr1(string haystack, string needle){int n = haystack.size(), m = needle.size();vector<int> next = build_next(needle);int i = 0, j = 0;while(i < n){if(haystack[i] == needle[j]){  //若匹配,指针后移i++;j++;}else if(j > 0)  //若不匹配,根据next跳过子串前面一些字符j = next[j-1];else  //若第一个字符就不匹配i++;if(j == m)return i-j;}return -1;
}

8. 外观数列

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

string countAndSay(int n) {int i, j, k;  //i为索引,j为计数器//每一次计算只需要知道它的前一个字符串即可,不需要知道每一项,所以用两个字符串分别记录当前项和前一项。string str1 = "1", str2;for(k = 0; k < n - 1; k++){i = 0;while(i < str1.size()){j = 0;while(i+1 < str1.size()  && str1[i] == str1[i+1]){j++;i++;}//法1//str2.push_back(j+1+'0');  //int转char +'0'//str2.push_back(str1[i]);//法2str2 += to_string(j+1);str2 += str1[i];i++;}str1 = str2;str2.clear();}return str1;
}

9. 最长公共前缀

在这里插入图片描述

string longestCommonPrefix(vector<string>& strs) {int i, j;string prefix = strs[0];  //假设一个字符串为最长公共前缀//遍历后面的每一个字符串for(i = 1; i < strs.size(); i++){for(j = 0; j < strs[i].size(); j++){if(strs[i][j] != prefix[j]){prefix = prefix.substr(0, j);  //截取字符串,注意需要赋值操作。从下标0开始取j个break;}}if(j < prefix.size())prefix = prefix.substr(0, j);}return prefix;
}

相关文章:

Leedcode刷题——2 字符串

注&#xff1a;以下代码均为c 1. 反转字符串 void reverseString(vector<char>& s) {int n s.size();int i, j;for(i 0, j n - 1; i < j; i, j--){swap(s[i], s[j]);}}2. 整数反转 int reverse(int x) {int rev 0;while(x ! 0){if(rev < INT_MIN / 10 || …...

2016年认证杯SPSSPRO杯数学建模B题(第二阶段)多帧图像的复原与融合全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 B题 多帧图像的复原与融合 原题再现&#xff1a; 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制&#xff0c;拍摄设备只能在较低的分辨率下成像。为简单起见&#xff0c;我们只考虑单色成像。假设成像的分辨率为 32 64&#x…...

WMI接口设计实现

WMI是Windows操作系统管理数据和操作的基础设施&#xff0c;系统管理员可以使用VB Script、PowerShell及Windows API&#xff08;C、C#等&#xff09;管理本地或远程计算机。 使用WMI框架应用程序可以直接访问EC RAM、 I/O端口、Memory地址、寄存器、Setup NV设定值&#xff0c…...

前端项目,个人笔记(二)【Vue-cli - 引入阿里矢量库图标 + 吸顶交互 + setup语法糖】

目录 1、项目中引入阿里矢量库图标 2、实现吸顶交互 3、语法糖--<script setup> 3.1、无需return 3.2、子组件接收父组件的值-props的使用 3.3、注册组件 1、项目中引入阿里矢量库图标 步骤一&#xff1a;进入阿里矢量库官网中&#xff1a;iconfont-阿里巴巴矢量…...

OpenCV 介绍使用

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9.0开源计算机视觉库使用简要说明 下一篇: OpenCV&#xff08;开源计算机视觉库&#xff1a;http://opencv.org&#xff09;是一个开源库&#xff0c;包含数百种计算机视觉算法。…...

Python 10个面试题实例

当然&#xff01;以下是10个Python面试题及其示例解决方案的中题目&#xff1a; 1.反转字符串: string "Hello, World!" reversed_string string[::-1] print(reversed_string)2.检查字符串是否为回文: def is_palindrome(string):return string string[::-1]r…...

Python:熟悉简单的skfuzzy构建接近生活事件的模糊控制器”(附带详细注释说明)+ 测试结果

参考资料&#xff1a;https: // blog.csdn.net / shelgi / article / details / 126908418 ————通过下面这个例子&#xff0c;终于能理解一点模糊理论的应用了&#xff0c;感谢原作。 熟悉简单的skfuzzy构建接近生活事件的模糊控制器 假设下面这样的场景, 我们希望构建一套…...

opencv函数使用查找

opencv官方文档地址&#xff1a;https://docs.opencv.org/4.x/index.html 先选对应的版本opencv-python 以这个函数为例子 model cv2.face.LBPHFaceRecognizer.create() 点开后找face类的LBP里面就有create函数的用法...

使用 pypdf 快速切分 PDF 文件

categories: [Python] tags: Python MacOS 写在前面 最近有小伙伴问我怎么把 PDF 文档切分成两个大小相近的 PDF文档, 要是在 mac 上, 直接无脑预览就行了, 但是这样不够跨平台, 之后我也尝试过 pymupdf, 但是奈何不支持 arm 架构, 后来还是用 Python 原生的 pypdf 了. 有 AI…...

Avalonia(11.0.2)+.NET6 打包运行到银河麒麟V10桌面系统

操作系统配置 项目结构 .net版本 这次我们是在银河麒麟V10系统上打包运行Avalonia(11.0.2)+.NET6.0的程序 开始打包 准备Linux下的桌面快捷方式以及图标 调整AvaloniaApplication2.Desktop.csproj的配置项,重点看下图红色线圈出来的部分,里面涉及到了LinuxPath的设置。完整的配…...

Mac nvm install failed python: not found

报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹&#xff0c;并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…...

C语言基础知识复习(考研)

&#xff08;1&#xff09;C语言文件操作 1 什么是文件 文件有不同的类型&#xff0c;在程序设计中&#xff0c;主要用到两种文件&#xff1a; (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…...

Prometheus Grafana 配置仪表板

#grafana# 其实grafana提供了丰富的Prometheus数据源的仪表板&#xff0c;基本上主流的都有&#xff0c;通过下面官方地址可查阅 Dashboards | Grafana Labs 这里举例说明&#xff0c;配置node_exporter仪表板 首先&#xff0c;在上面的网站搜索 node 可以查到蛮多的仪表板…...

docker 哲学 - 网络桥接器、容器网络接口 、容器间的通信方式

1、解释 docker0 veth eth 2、vethXX 和 ethXX 是肯定一一对应吗 比如 eth1 对应 veth1 3、如果 A容器使用 默认创建方式 。定义他内部网络为 eth0&#xff0c;容器B使用 --network 连上 已创建的网络 172.89.2.1 。此时假设 B的 ip是 172.89.2.2 &#xff0c;容器网络接口是 e…...

Python 将HTML转为PDF、图片、XML、XPS格式

网页内容是信息传播的主要形式之一。在Web开发中&#xff0c;有时候我们需要将HTML文件以不同的格式保存或分享&#xff0c;比如PDF、图片&#xff08;如PNG或JPEG&#xff09;、XML或XPS等。这些格式各有优势&#xff0c;适合不同的用途。在这篇文章中&#xff0c;我们将介绍如…...

排序算法记录(冒泡+快排+归并)

文章目录 前言冒泡排序快速排序归并排序 前言 冒泡 快排 归并&#xff0c;这三种排序算法太过经典&#xff0c;但又很容易忘了。虽然一开始接触雀氏这些算法雀氏有些头大&#xff0c;但时间长了也还好。主要是回忆这些算法干了啥很耗时间。 如果在笔试时要写一个o(nlogn)的…...

简单聊聊如何更优雅地初始化对象:构造函数、Builder模式和静态工厂方法比较

大家好&#xff0c;我是G探险者。 在平时的java编程中&#xff0c;你肯定会有过对一些实体对象进行初始化的set操作&#xff0c;有的对象的属性较少可能还好点&#xff0c;当一个对象拥有许多属性时&#xff0c;通常的初始化方式可能显得笨拙而不直观&#xff0c;代码写的很不…...

跳过mysql权限验证来修改密码-GPT纯享版

建议重新配置一遍&#xff0c;弄成功好多次了&#xff0c;每次都出bug&#xff0c;又要重新弄&#xff0c;不是过期就是又登不进去了&#xff0c;我服了 电脑配置MySQL环境&#xff08;详细&#xff09;这个哥们的10min配完&#xff0c;轻轻松松&#xff0c; 旧方法&#xff…...

Vue3快速上手(十七)Vue3之状态管理Pinia

一、简介 Pinia官网:https://pinia.vuejs.org/zh/ 从官网截图里可以直接看到,pinia是一个vuejs的状态(数据)管理工具。功能性同vuex。logo是小菠萝。它是一个集中式状态管理工具。就是将多个组件共用的数据管理起来,重复利用。有点类似缓存的意思。 二、Pinia环境搭建 …...

时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测

时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测 目录 时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现BiTCN-GRU双向时间卷积神经网络结…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...