news 2026/7/8 9:38:04

树|regex正则

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树|regex正则

lc2047

可以三解,复习了:模拟 状态机 正则

正则+istringstream处理

这才是真正的代码😭

正则表达式 (([a-z]+-)?[a-z]+)?[!,.]? 的结构和匹配逻辑是:
- 核心部分 ([a-z]+-)?[a-z]+ :匹配“纯小写字母”(如 abc )或“小写字母+连字符+小写字母”(如 abc-def ,连字符前后至少1个字母);
- 外层 (...)? :让核心部分可选(但结合实际场景,通常是必填,避免空串);
- 末尾 [!,.]? :匹配0或1个句末标点( ! / , / . )。
整体用于匹配合法单词:允许“纯字母”“字母-连字符-字母”,且可带1个句末标点

#include <regex>

class Solution {

public:

int countValidWords(string sentence) {

regex r1("(([a-z]+-)?[a-z]+)?[!,.]?");

//定义匹配pattern

istringstream iss(sentence);

int ans=0;

string word;

while(iss>>word){

if(regex_match(word,r1)){

ans++;

}

}

return ans;

}

};

判断句子中每个单词是否合法(合法是“纯字母”“字母-字母”或这两类加句末标点),统计合法单词数

状态机 优雅的转移设计
-1:错误
0:空格
1:字母
2:字母+链接符
3:字母+链接符+字母
4:结尾

状态注意的梳理 可以画图枚举 画画就出来啦

class Solution {

public:

int countValidWords(string sentence)

{

int state=0,res=0;

sentence+=' ';

for(auto& c:sentence){

if(c==' '){

if(state==1||state==3||state==4)res++;

state=0; //重置

}

else if('a'<=c&&c<='z'){

if(state==0||state==2)state++;

else if(state==1||state==3)continue;

else state=-1;

}

else if(c=='-'){

if(state==1)state=2;

else state=-1;

}

else if(c=='.'||c==','||c=='!'){

if(state==0||state==1||state==3)

state=4;

else state=-1;

}

else state=-1;

}

return res;

}

};

lc1422

注意 覆盖所有分割点

class Solution {

//左0右1

public:

int maxScore(string s)

{

int n=s.size();

vector<int> p(n+1);

for(int i=1;i<=n;i++)

p[i]=p[i-1]+(s[i-1]-'0');

int ret=0;

for(int i=1;i<n;i++)

{

int f=i-p[i];

int b=p[n]-p[i];

ret=max(ret,f+b);

}

return ret;

}

};

lc563

int dfs

class Solution
{
public:
int findTilt(TreeNode* root)
{
int ret=0;
auto dfs=[&](this auto&& dfs,TreeNode* node)->int
{
if(!node) return 0;
int l=dfs(node->left);
int r=dfs(node->right);

ret+=abs(l-r);
return l+r+node->val;
};
dfs(root);
return ret;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 15:49:46

XUnity自动翻译插件:零基础入门到实战精通指南

XUnity自动翻译插件&#xff1a;零基础入门到实战精通指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator Unity游戏玩家们&#xff0c;你是否曾因语言障碍而错过精彩的外文游戏&#xff1f;XUnity Auto …

作者头像 李华
网站建设 2026/7/6 9:22:06

OBS直播优化全攻略:从新手到专家的配置进阶之路

OBS直播优化全攻略&#xff1a;从新手到专家的配置进阶之路 【免费下载链接】obs-studio 项目地址: https://gitcode.com/gh_mirrors/obs/obs-studio 你是不是经常遇到这样的困扰&#xff1f;直播画面卡顿、音频有杂音、场景切换不流畅...别担心&#xff0c;今天我将带…

作者头像 李华
网站建设 2026/7/6 16:30:28

面试问题预测:LobeChat模拟真实考场

面试问题预测&#xff1a;LobeChat模拟真实考场 在技术岗位的求职战场上&#xff0c;一场高质量的面试往往决定了职业发展的走向。然而&#xff0c;大多数候选人在准备过程中仍依赖刷题网站和静态问答库——这些工具虽然能帮助记忆知识点&#xff0c;却无法还原真实面试中那种层…

作者头像 李华
网站建设 2026/7/8 6:18:44

LobeChat能否对接冥王星地形图?柯伊伯带天体特征科普

LobeChat能否对接冥王星地形图&#xff1f;柯伊伯带天体特征科普 在人类对太阳系边疆的探索中&#xff0c;冥王星始终是一个充满神秘感的存在。2015年“新视野号”飞掠这颗矮行星时传回的地貌图像震惊了科学界&#xff1a;广袤的心形冰原、崎岖的氮冰山脉、可能存在的地下海洋……

作者头像 李华
网站建设 2026/7/7 13:43:21

TegraRcmGUI:Nintendo Switch自定义payload注入的图形化解决方案

TegraRcmGUI是一款基于C开发的Windows图形界面工具&#xff0c;专门为Nintendo Switch玩家提供简单易用的自定义payload注入功能。通过直观的可视化界面&#xff0c;它将复杂的命令行操作转化为点击式交互&#xff0c;让普通用户也能轻松探索游戏主机的无限潜能。 【免费下载链…

作者头像 李华
网站建设 2026/7/6 16:17:40

FlutterOpenHarmony商城App倒计时组件开发

前言 倒计时是商城应用中营造紧迫感的重要组件&#xff0c;广泛应用于限时抢购、秒杀活动、优惠券过期提醒等场景。一个设计良好的倒计时组件需要精确显示剩余时间&#xff0c;并在视觉上吸引用户注意力。本文将详细介绍如何在Flutter和OpenHarmony平台上开发倒计时组件。 倒计…

作者头像 李华