7.23 字符串简单中等 520 125 14 34

520 Detect Capital

在这里插入图片描述

思路:

  1. 题目:判定word :if the usage of capitals in it is right.
  2. 遍历所有的string:
    两种情况:
    首字母capitals–>判定第二个字母是否大写–>所有字母大写
    otherwise 除第一个以外全部小写,首字母小写–>判定所有的字母是否小写
    (ASCII码中 Z<a)
  3. 细节:无
class Solution {
public:bool detectCapitalUse(string word) {bool isCapital = 0;//just 0&1 both capital aB ab AB Abif(word[0] < 'a' && word[1] < 'a'){isCapital = 1;}int n = word.size();for(int i = 1 ; i < n ; i ++){if(isCapital && word[i] >= 'a'){return false;}//大写情况出现小写else if(!isCapital && word[i] < 'a'){return false;}//小写情况出现大写}return true;}
};

125 Valid Palindrome

在这里插入图片描述

思路:

  1. 题目:回文串,Alphanumeric characters include letters and numbers.
  2. 大体: 判断首尾是否一致:i 反转string ii 双指针一前一后判断。
    选ii,跳过非Alphanumeric characters的内容,bool isCharacter(char c) isalnum() ; 大写变小写:s[i]-‘A’+‘a’; tolower();
    大致:i从头到尾 j从尾到头,移动ij直至对应位置isCharacter ,然后判别s[i] == s[j]?如果不等就return
    false, 等就继续。直至循环 (i < n && j >= 0) (i<j)结束,return true。
  3. 细节:当String.size() == 0 or 1需直接返回true.优化中不需要,因为left < right不满足直接return true了。
class Solution {
public:bool isCharacter(char c){return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9');}char changeCapital(char c){if(c >= 'A' && c <= 'Z'){return 'a' + (c - 'A');}return c;}bool isPalindrome(string s) {int n = s.size();if(n < 2) return true;int i = 0, j = n - 1;while(i < j) {if(!isCharacter(s[i])) {i++;continue;}if(!isCharacter(s[j])) {j--;continue;}if(changeCapital(s[i]) != changeCapital(s[j])) {return false;}i++;j--;}return true;}
};

c++代码学习

tolower();//大写变小写
isalnum();//判断是否为数字或者字符串

优化:

class Solution {
public:bool isPalindrome(string s) {int n = s.size() , left = 0 , right = n-1;while(left < right){while(left < right && !isalnum(s[left])){left++;}while(left < right && !isalnum(s[right])){right--;}if(tolower(s[left]) != tolower(s[right])){return false;}left++;right--;}return true;}
};

14 Longest Common Prefix

在这里插入图片描述

【默写】纵向比较,没做出的原因:以为是子字符串,prefix是前缀!!! 语言学导论全忘了 思路:

  1. 题目:prefix前缀特点:从0开始,按顺序一一比较。
  2. 大体:纵向比较,确定第一个string为参考,和后面的string中同一位置比较,比较完这一位才会比较后一位。当对应位置字符不等或者后者的字符串遍历结束,返回strs[0]对应的子串。
  3. 细节:strs为空时,return “”;
class Solution {
public:string longestCommonPrefix(vector<string>& strs) {if(!strs.size())return "";int len = strs[0].size();int count = strs.size();//第一个数组为固定比较对象for(int i = 0 ; i < len ;i++){char c = strs[0][i];for(int j = 1 ; j < count ; j++){if(i == strs[j].size() || c != strs[j][i]){return strs[0].substr(0 , i);}}}return strs[0];}
};

34 Find First and Last Position of Element in Sorted Array

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

  1. 题目:non-decreasing 非递减数组,找始末位置 他有要求时间复杂度!!!
  2. 大体:遍历数组:当nums[i]<tar的时候,直接continue。当nums[i]>tar时,直接break。剩余就是有tar,判断边界就可以,起始:i==0 || nums[i-1] != tar 结束:i == n-1 || nums[i+1] !=tar
  3. 细节:注意为空的情况或者tar就不在nums数组范围内,直接return {-1 , -1};
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> res = {-1 , -1};int n = nums.size();if(!n || target < nums[0] || target > nums[n-1]){return res;}//non-decreasing orderfor(int i = 0 ; i < n ; i++){if(nums[i] < target){continue;}if(nums[i] > target){break;}if(i == 0 || nums[i-1] != target){res[0] = i;}if(i == n-1 || nums[i+1] != target){res[1] = i;break;}}return res;}
};

优化:二分查找

int left = 0 , right = n-1;
while(left <= right){mid = (left + right) >> 1;//如果mid满足条件 [left ,mid]之间查找 即right = mid;//不满足就是[mid+1 , right] 即left = mid+1;
}
//---------------------------acwingの----------------------
bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:
int bsearch_1(int l, int r)
{while (l < r){int mid = l + r >> 1;if (check(mid)) r = mid;    // check()判断mid是否满足性质else l = mid + 1;}return l;
}
// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用:
int bsearch_2(int l, int r)
{while (l < r){int mid = l + r + 1 >> 1;if (check(mid)) l = mid;else r = mid - 1;}return l;
}
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {int n = nums.size() , left = 0 , right = n-1;vector<int> res = {-1,-1};//找起始while(left <= right){int mid = (left + right) >> 1;if(nums[mid] == target){//往前找res[0] = mid;right = mid-1;}else if(nums[mid] > target){right = mid-1;}else{left = mid+1;}}left = 0;right = n-1;//找结尾while(left <= right){int mid = (left + right) >> 1;if(nums[mid] == target){//往后找res[1] = mid;left = mid+1;}else if(nums[mid] > target){right = mid-1;}else{left = mid+1;}}return res;}
};

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

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

相关文章

使用xxl-job执行定时任务

文章目录 使用xxl-job执行定时任务xxl-job原理我们自己的项目里面需要怎么写定时任务呢&#xff1f;如果想要使用xxl-job我们需要在服务器上部署两个项目 使用xxl-job执行定时任务 xxl-job原理 首先xxl-job的全拼是“XiaoXiaoLiang Job”或者“Xu Xue Li”作者的名字&#xf…

华清数据结构day4 24-7-19

链表的相关操作 linklist.h #ifndef LINKLIST_H #define LINKLIST_H #include <myhead.h> typedef int datatype; typedef struct Node {union{int len;datatype data;};struct Node *next; } Node, *NodePtr;NodePtr list_create(); NodePtr apply_node(datatype e); …

从零开始学Java(超详细韩顺平老师笔记梳理)06——面向对象编程基础(上):类与对象、成员方法、传参机制、对象克隆、递归(斐波那契、迷宫、汉诺塔、八皇后)

文章目录 前言一、类与对象1. 类与对象的概述2. 快速入门&#xff08;用面向对象的方式解决问题&#xff09;3. 对象在内存中的存在形式&#xff08;重要&#xff09;4. 属性5. 类与对象的内存分配机制 二、成员方法1. 基本介绍2. 快速入门3. 方法调用机制原理&#xff08;重点…

【HarmonyOS学习】用户文件访问

概述 文件所有者为登录到该终端设备的用户&#xff0c;包括用户私有的图片、视频、音频、文档等。 应用对用户文件的创建、访问、删除等行为&#xff0c;需要提前获取用户授权&#xff0c;或由用户操作完成。 用户文件访问框架 是一套提供给开发者访问和管理用户文件的基础框…

【JavaEE初阶】线程的概念及创建

目录 &#x1f4d5; 前言 &#x1f4d5; 认识线程&#xff08;Thread&#xff09; &#x1f6a9; 概念 &#x1f60a;线程是什么 &#x1f642; 为啥要有线程 &#x1f62d; 进程和线程的区别&#xff08;面试题重点&#xff09; &#x1f92d; Java的线程和操作系统线程…

MyBatis-Plus的基本使用(一)

目录 前言 特性 MyBatis-Plus入门案例 常用注解 小结 前言 这篇文章主要来学习MyBatis-Plus这个非常强大的框架. 在学习MyBatis-Plus之前,需要有MyBatis的学习基础.因为MyBatis -Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#x…

Leetcode3216. 交换后字典序最小的字符串

Every day a Leetcode 题目来源&#xff1a;3216. 交换后字典序最小的字符串 解法1&#xff1a;模拟 找到第一个 s[i] > s[i 1]&#xff0c;且它们奇偶性相同&#xff0c;交换它们。 代码&#xff1a; /** lc appleetcode.cn id3216 langcpp** [3216] 交换后字典序最小…

Efficient and Effective Weakly-Supervised Action Segmentation via ATBA

**基于动作转移感知边界对齐的高效弱监督动作分割**介绍 动作分割的目的是将一个长的未裁剪的视频分割成几个片段&#xff0c;并将每个片段分类为一个动作类别&#xff0c;如下图所示&#xff1a; 弱监督动作分割 现有的训练方法大多需要通过对所有帧和文本进行序列比对来…

JavaScript构造函数小挑战

// 编码挑战 #1 /* 使用构造函数实现一辆汽车。一辆汽车有一个品牌和一个速度属性。speed 属性是汽车当前的速度&#xff0c;单位为 km/h&#xff1b; a. 执行一个 “accelerate ”方法&#xff0c;将汽车的速度提高 10&#xff0c;并将新速度记录到控制台&#xff1b; 3. a.…

笔记小结:现代卷积神经网络之批量归一化

本文为李沐老师《动手学深度学习》笔记小结&#xff0c;用于个人复习并记录学习历程&#xff0c;适用于初学者 训练深层神经网络是十分困难的&#xff0c;特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化&#xff08;batch normalization&#xff09;&#xf…

Dav_笔记10:Using SQL Plan Management之3

将SQL计划基准与SQL Tuning Advisor一起使用 使用SQL Tuning Advisor调整SQL语句时&#xff0c;如果顾问程序找到调优计划并验证其性能优于从相应SQL计划基准中选择的计划&#xff0c;则建议接受SQL配置文件。 接受SQL配置文件后&#xff0c;数据库会将调整后的计划添加到相应…

群管机器人官网源码

一款非常好看的群管机器人html官网源码 搭建教程&#xff1a; 域名解析绑定 源码文件上传解压 访问域名即可 演示图片&#xff1a; 群管机器人官网源码下载&#xff1a;客户端下载 - 红客网络编程与渗透技术 原文链接&#xff1a; 群管机器人官网源码

云仓如何改变传统仓储模式?

云仓&#xff0c;即云仓储&#xff0c;是一种基于互联网技术的现代仓储模式&#xff0c;与传统的仓储模式相比&#xff0c;它在多个方面进行了创新和优化&#xff0c;包括&#xff1a; ———————————————————— 1、数据管理与实时监控&#xff1a; 云仓储利…

Element-ui :el-table 中表尾合计行

Table 表格 | Element Plus <template><el-table :data"tableData" border show-summary :summary-method"getSummariesss" style"width: 100%"><el-table-column prop"id" label"ID" width"180"…

C++与lua联合编程

C与lua联合编程 一、环境配置二、lua基本语法1.第一个lua和C程序2.基本数据类型和变量2.1 Nil2.2 Booleans2.3 Numbers2.4 String(最常用) 3. 字符串处理3.1 错误处理3.2 字符串长度:string.len3.3 字符串子串 :string.sub3.4 字符串查找: string.find3.5字符串替换: string.gs…

【笔记】ubuntu 误退了搜狗输入法:终端上输入fcitx即可重启

有时候&#xff0c;我们可能嫌弃ubuntu上的搜狗输入法&#xff0c;点击了退出&#xff1a; 但是当我们想开启搜狗输入法时&#xff0c;发现它消失了&#xff0c;此时我们可以打开终端&#xff0c;键入&#xff1a; fcitx 即可成功开启。

一些和颜色相关网站

1.中国传统色 2.网页颜色选择器 3.渐变色网站 4.多风格色卡生成 5.波浪生成 6.半透明磨砂框 7.色卡组合

全国区块链职业技能大赛国赛考题前端功能开发

任务3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件login.js、组件管理文件components.js中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功能完整性,示例页面如下: 具体要求如下: (1)有明确的提示,提示用户选择角色; (2)用户可看…

微服务安全——OAuth2详解、授权码模式、SpringAuthorizationServer实战、SSO单点登录、Gateway整合OAuth2

文章目录 Spring Authorization Server介绍OAuth2.0协议介绍角色OAuth2.0协议的运行流程应用场景授权模式详解客户端模式密码模式授权码模式简化模式token刷新模式 OAuth 2.1 协议介绍授权码模式PKCE扩展设备授权码模式拓展授权模式 OpenID Connect 1.0协议Spring Authorizatio…

用51单片机或者stm32能否开发机器人呢?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;能的。但是由于单片机和st…