STL <string>--------String的OJ题目

1.题目截图(把字符串转换成整数----atoi)

1.1题目解析(在代码里)

class Solution {
public:int myAtoi(string str) {// 100%  97.45%   int len = str.size();if(len == 0)return 0;int i = 0, flag = 1, isSignal = 0, res = 0;while(i < len && str[i] == ' ')  //跳过空格i++;if(i >= len)  //如果全是空格return 0;while(i < len && str[i] == '-' || str[i] == '+'){  //取符号if(str[i] == '-')flag = -1;i++;isSignal++;if(isSignal > 1)  //不能超过一个符号return 0;}while(isdigit(str[i])){  //只要前面的那些数字if(res > INT_MAX / 10 || (res == INT_MAX / 10 && str[i] > '7'))  //用int来控制不溢出return flag == 1? INT_MAX : INT_MIN;res = res * 10  - '0' + str[i];i++;} return flag * res;}
};

2.Leetcode415--字符串相加

class Solution {
public:string addStrings(string num1, string num2){int end1 = num1.size() - 1;int end2 = num2.size() - 1;string str;int next = 0;     //用来进位while(end1 >= 0 || end2 >= 0){int x1 = end1 >= 0 ? num1[end1--] - '0' : 0;int x2 = end2 >= 0 ? num2[end2--] - '0' : 0;int x = x1 + x2 + next;//处理一下进位next = x / 10;x = x % 10;//尾插str += ('0' + x);}if(next == 1){str += '1';}reverse(str.begin() , str.end());return str;}
};

3.Leetcode----344.反转字符串

3.1用双指针解决问题

class Solution {
public:void reverseString(vector<char>& s){int n = s.size();for(int left = 0,right = n - 1;left < right;left ++ , right--){swap(s[left] , s[right]);}}
};

4.Leetcode387--- 字符串中的第一个唯一字符

class Solution {
public:int firstUniqChar(string s){//统计次数int count[26] = {0};for(auto ch : s){count[ch-'a']++;}for(size_t i = 0;i < s.size();++i){if(count[s[i] - 'a' ]== 1){return i;}}return -1;}
};

5.Leetcode----125 验证回文串

class Solution {
public:bool isLetterOrNumber(char ch){return (ch>='0'&&ch <='9')|| (ch >='a'&& ch <='z')|| (ch>='A' && ch <= 'Z');}bool isPalindrome(string s) {for(auto& ch : s){if(ch >='A' && ch <= 'Z'){ch += 32;}}int begin = 0 , end = s.size()-1;while(begin < end){while(begin < end && !isLetterOrNumber(s[begin]))++begin;while(begin < end && !isLetterOrNumber(s[end]))--end;if(s[begin] != s[end]){return false;}else{++begin;--end;}}return true;}
};

6.Leetcode---43.字符串相乘

class Solution {public:void MulItem(string &tmp, string &num1, char a){int i = 0, sign=0;int mul = 0;while(i < num1.size()){mul = (num1[i]-'0') * (a-'0') + sign;if(mul >= 10){sign = mul / 10;mul %= 10;}elsesign = 0;tmp.push_back(mul+'0');i++;}    if(sign > 0)tmp.push_back(sign+'0'); }   //对应为相加,sign进位采用引用传递int AddItem(int a, int b, int &sign){int add = a+b+sign;if(add >= 10){sign = 1;add -= 10;}elsesign = 0;return add;}//错位相加void MoveAdd(string &result, string &tmp, int k){int i, j;i = k;j = 0;int sign = 0;while(i<result.size() &&j<tmp.size()){result[i] = AddItem(result[i]-'0', tmp[j]-'0', sign) + '0';i++;j++;}while(i<result.size() && sign){result[i] = AddItem(result[i]-'0', 0, sign)+'0';i++;}while(j < tmp.size()){int v = AddItem(0, tmp[j]-'0', sign);result.push_back(v+'0');j++;}if(sign)result.push_back(sign+'0');}string multiply(string num1, string num2) {//先翻转数据,方便进位处理reverse(num1.begin(), num1.end());reverse(num2.begin(), num2.end());string tmp, result;for(int i=0; i<num2.size(); ++i){//使用num2的每一个数据乘以num1MulItem(tmp, num1, num2[i]);//将乘得的结果进行错位相加MoveAdd(result, tmp, i);tmp.clear();}    while(result.size()!=1 && result.back()=='0')result.pop_back();//翻转数据,恢复数据reverse(result.begin(), result.end());return result;}};

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

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

相关文章

24个AI写作网站汇总,免费ai工具,把AI用好工作效率真的能提高300%!

从去年到今年&#xff0c;可谓是AI爆发之年&#xff0c;各种AI工具也是层出不穷。随着openai的暴堆算力以及chatgpt人工智能算法的不断进步&#xff0c;ai正在大跨步的向前迈进。 ai可说是集中了全人类的智慧&#xff0c;未来ai的发展我是不敢想象的。不过在今天&#xff0c;如…

win10电脑怎么录屏?推荐这2个必备技巧

在数字化时代&#xff0c;屏幕录制已成为学习、工作和娱乐中不可或缺的一环。Windows 10作为广泛使用的操作系统&#xff0c;为用户提供了多种录屏工具和方法&#xff0c;可是很多用户不知道win10电脑怎么录屏。本文将深入介绍两种常见的win10电脑录屏方法&#xff0c;为读者提…

【重要通知】【日记】做为柜员的第一天(398 字)

正文 今天是做柜员的第一天&#xff0c;准确来说是半天。虽然没什么业务&#xff0c;不过还是有些手足无措。主要是真上阵了还是有些恐慌吧。 交接手续真的非常麻烦。 听他们说&#xff0c;不久之后他们要去插秧什么的&#xff0c;据说是党日活动&#xff0c;我真心觉得有些麻&…

深入理解 House of Cat

Index 序言利用 FSOP 调用 House of Cat利用条件伪造IO流条件完整调用链分析 模板System (one_gadget) 模板ORW模板 Demo & Exp利用 __malloc_assert 调用 House of Cat例题&#xff1a;题目思路Exp 序言 原文章&#xff1a;深入理解 House of Cat 随着 GNU 持续不断的更…

【动态规划】子序列问题II|最长定差子序列|最长的斐波那契数列的长度|最长等差数列|等差数列的划分

一、最长定差子序列 1218. 最长定差子序列 算法原理&#xff1a; &#x1f4a1;细节&#xff1a; 1.正常创建dp表&#xff0c;分析状态转移方程&#xff1a;可能b存在于多个不同的位置&#xff0c;那么要用哪个下标的dp呢&#xff1f; 用最后一个b的&#xff0c;因为用前面的可…

【SpringBoot】SpringBoot3-基本介绍

目录 环境基本介绍pom.xml启动器依赖管理机制分析为什么导入starter-web所有相关依赖都导入进来&#xff1f;为什么版本号都不用写&#xff1f;自定义版本号第三方的依赖 总结 自动配置机制理解默认的包扫描规则配置默认值按需加载自动配置总结 自动配置流程问题流程步骤流程总…

软考笔记随记

原码:(0正1负) 原码是最直观的编码方式,符号位用0表示正数,用1表示负数,其余位表示数值的大小。 例如,+7的原码为00000111,-7的原码为10000111。 原码虽然直观,但直接用于加减运算会导致计算复杂,且0有两种表示(+0和-0),不唯一。 反码: 反码是在原码的基础上得…

UI组件解析!5种类型让你迅速掌握!

无论是网页开发项目还是移动应用程序开发&#xff0c;整个项目过程的每一步都需要综合考虑。UI组件是设计师在项目设计过程中经常使用的工具之一。下面将为您详细分析UI组件&#xff0c;产品小白也可以快速启动。 1. 什么是UI组件&#xff1f; UI组件&#xff0c;即用户界面组…

基于PHP+MySQL组合开发的多用户自定义商城系统源码 附带源代码包以及搭建教程

系统概述 互联网技术的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。商城系统作为电子商务的核心&#xff0c;其开发技术和用户体验直接影响着电商平台的竞争力和用户满意度。本文旨在介绍一个基于PHPMySQL组合开发的多用户自定义商城系统&#xff0c;…

【密评】 | 商用密码应用安全性评估从业人员考核题库(09)

Hill密码是重要古典密码之一&#xff0c;其加密的核心思想的是&#xff08;&#xff09;。 A.线性变换 B.非线性变换 C.循环移位 D.移位 著名的Kerckhoff原则是指&#xff08;&#xff09;。 A.系统的保密性不但依赖于对加密体制或算法的保密&#xff0c;而且依赖于密钥 B.系统…

TB-03 二次开发环境搭建指导

文章目录 前言一、安装开发工具1. 官网下载安装包2. 解压下载的好的压缩包3. 安装开发工具 二、使用步骤1. 修改编译路径2. 打开开发工具并进入SDK2. 导入工程 三、编译文件1. 编译2. 成功 四、烧录总结 前言 本篇博文来介绍一下如何搭建TB-03模组二次开发环境&#xff01; 一…

学习笔记:使用Ollama项目快速本地化部署Qwen 1.5模型

Ollama简介 Ollama是一个开源框架&#xff0c;专门设计用于在本地运行大型语言模型。它的主要特点是将模型权重、配置和数据捆绑到一个包中&#xff0c;从而优化了设置和配置细节&#xff0c;包括GPU使用情况&#xff0c;简化了在本地运行大型模型的过程。Ollama支持macOS和Li…