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.mzph.cn/diannao/49373.shtml

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

相关文章

spring —— AOP(各类通知)

接&#xff1a;spring —— AOP&#xff08;前置通知&#xff09; 除前置通知&#xff08;Before&#xff09;外&#xff0c;AOP 里面还有返回通知&#xff08;AfterReturning&#xff09;、异常通知&#xff08;AfterThrowing&#xff09;、后置通知&#xff08;After&#x…

nginx的配置和使用

一、nginx支持win和linux版本的下载&#xff0c;选择合适的版本进行安装 二、配置文件注解 重点的几个参数进行注释&#xff1a; 1、listen 要监听的服务的端口&#xff0c;符合这个端口的才会被监听 server_name要监听的服务地址&#xff0c;可能是ip,也可能是域名&#xf…

Dav_笔记10:Using SQL Plan Management之4

SQL管理库 SQL管理库(SMB)是驻留在SYSAUX表空间中的数据字典的一部分。它存储语句日志,计划历史记录,SQL计划基准和SQL配置文件。为了允许每周清除未使用的计划和日志,SMB使用自动空间管理。 您还可以手动将计划添加到SMB以获取一组SQL语句。从Oracle Database 11g之前的…

Docker学习笔记(自用,不定期更新)

知识点&#xff1a; 容器是 Docker 的另一个核心概念。简单来说&#xff0c;容器是镜像的一个运行实例。所不同的是&#xff0c;镜像是静态的只读文件&#xff0c;而容器带有运行时需要的可写文件层&#xff0c;同时&#xff0c;容器中的应用进程处于运行状态。 容器保护三个…

41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:

20240723 一、数组最后几个和字符串的两个448. 找到所有数组中消失的数字&#xff08;和645. 错误的集合差不多&#xff09;283. 移动零118. 杨辉三角119. 杨辉三角 II661. 图片平滑器&#xff08;没看懂&#xff09;598. 区间加法 II566. 重塑矩阵303. 区域和检索 - 数组不可变…

键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???

当在键盘上按下一个键时会进行一下操作&#xff1a; 1.当按下任意一个键时&#xff0c;键盘编码器监控会来判断按下的键是哪个 2.键盘控制器用将解码,将键盘的数据保存到键盘控制器里数据寄存器里面 3.此时发送一个中断请求给中断控制器&#xff0c;中断控制器获取到中断号发送…

全球性“微软蓝屏”事件反思:如何预防大规模系统故障

写在开头 近日&#xff0c;由于微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;再次将网络安全与系统稳定性的问题推上了风口浪尖。此次事件不仅成为科技领域的热点新闻&#xff0c;也对全球IT基础设施的韧性与安全性进行了一次深刻的检验。美国电脑安全技术公…

Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是什么&#xff1f; Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建&#xff0c;提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;带有 HTTP web 接口…

深入MySQL中的IF和IFNULL函数

在数据库查询中&#xff0c;我们经常需要根据条件来决定数据的显示方式。MySQL提供了多种内置函数来帮助我们实现这种条件逻辑&#xff0c;其中IF和IFNULL是两个非常有用的函数。在这篇博客中&#xff0c;我们将深入探讨这两个函数的用法和它们在实际查询中的应用。 IF函数 I…

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

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

React中引入使用本地图片

1、css样式中&#xff0c;可以写成如下&#xff1a; .login {// 映射路径background: url(images/img-login.png)&#xff1b;background-size: 100% 100%; } .box{// 相对路径background: url(../assets/images/box.png)&#xff1b;background-size: 100% 100%; }2、在jsx文…

Redis-10大数据类型理解与测试

Redis10大数据类型 我要打10个1.redis字符串(String)2.redis列表(List)3.redis哈希表(Hash)4.redis集合(Set)5.redis有序集合(ZSet)6.redis地理空间(GEO)7.redis基数统计(HyperLogLog)8.redis位图(bitmap)9.redis位域(bitfield)10.redis流(Stream) 官网地址Redis 键(key)常用案…

Odoo Registry 源码解读:前端世界的魔法师

亲爱的Odoo探险家们,准备好踏上一段奇妙的代码冒险了吗?今天,我们要深入探索Odoo前端世界的一位神秘大师——Registry。它可能不像那些花哨的UI组件那样引人注目,但要知道,真正的高手都是低调的。Registry就像是Odoo世界里的甘道夫,默默地用魔法维持着整个中土世界的平衡…

卷与nfs实现多台主机容器之间的数据共享

容器存放数据到宿主机里 数据持久化&#xff1a;永久保存 数据共享&#xff1a;容器和容器 容器和宿主机 就是宿主机里的文件夹 /var/lib/docker/volumes docker 容器&#xff1a;容器运行起来是一个进程&#xff0c;进程的数据默认都在内存里&#xff0c;内存里的数据停电…

鸿蒙界面开发

界面开发 //构建 → 界面 build() {//行Row(){//列Column(){//文本 函数名(参数) 对象.方法名&#xff08;参数&#xff09; 枚举名.变量名Text(this.message).fontSize(40)//设置文本大小.fontWeight(FontWeight.Bold)//设置文本粗细.fontColor(#ff2152)//设置文本颜色}.widt…

邮件流量分析

邮件流量分析是指对邮件系统中进出的邮件数量、类型、流向以及相关性能指标进行统计和评估的过程。这种分析有助于优化邮件系统的性能、检测异常活动、防止垃圾邮件和网络攻击&#xff0c;以及改善邮件营销策略。邮件流量分析可以分为几个主要方面&#xff1a; 邮件统计&#x…

MMROTATE的混淆矩阵confusion matrix生成

mmdetection中加入了混淆矩阵生成并可视化的功能&#xff0c;具体的代码在tools/analysis_tools/confusion_matrix.py。 mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题&#xff0c;做了一些修改&#xff0c;所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵&…

安装CUDA Cudnn Pytorch(GPU版本)步骤

一.先看自己的电脑NVIDIA 支持CUDA版本是多少&#xff1f; 1.打开NVIDIA控制面板 2.点击帮助---系统信息--组件 我的支持CUDA11.6 二.再看支持Pytorch的CUDA版本 三.打开CUDA官网 下载CUDA 11.6 下载好后&#xff0c;安装 选择 自定义 然后安装位置 &#xff08;先去F盘…

Python - conda使用大全

如何使用Conda&#xff1f; 环境 创建环境 conda create -n spider_env python3.10.11查看环境 conda env listconda info -e激活环境 conda activate spider_env退出环境 conda deactivate删除环境 conda env remove -n spider_env包 导出包 说明&#xff1a;导出当前虚拟…

孙健提到的实验室的研究方向之一是什么?()

孙健提到的实验室的研究方向之一是什么?&#xff08;&#xff09; 点击查看答案 A.虚拟现实B.环境感知和理解 C.智能体博弈D.所有选项都正确 图灵奖是在哪一年设立的?&#xff08;&#xff09; A.1962B.1966 C.1976D.1986 孙健代表的实验室的前身主要研究什么?&…