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

设计|str增量法|计算贡献

 

 

lc2262

记录每个字符上一次出现的位置last

sum_g += i - last[c];

计算以当前字符结尾的子串新增的吸引力值并累加

最终得到所有子串的吸引力值总和

 

 last 数组初始化为 -1

1.方便计算字符首次出现时对“吸引力”的贡献

2.还能让首次和后续出现的计算用同一个公式,简化逻辑

 class Solution {

public:
long long appealSum(string s) {
vector<int> last(26, -1); // 初始化成 -1 可以让提示 2-2 中的两种情况合并成一个公式
long long ans = 0;
int sum_g = 0;
for (int i = 0; i < s.size(); i++) {
int c = s[i] - 'a';
sum_g += i - last[c];
ans += sum_g;
last[c] = i;
}
return ans;
}
};

 

lc828

记录每个字符上一次last0和上上次last1出现的位置

计算每个位置对唯一字符数的贡献

total += i - 2 * last0[c] + last1[c];

 

累加得到所有子串唯一字符数的总和

 

 class Solution {
public:
int uniqueLetterString(string s) {
int ans = 0, total = 0, last0[26], last1[26];
memset(last0, -1, sizeof(last0));
memset(last1, -1, sizeof(last1));
for (int i = 0; i < s.length(); ++i)

      {
char c = s[i] - 'A';
total += i - 2 * last0[c] + last1[c];
ans += total;
last1[c] = last0[c];
last0[c] = i;
}
return ans;
}
};

 

lc3484

模拟简易表格

用hash存cell,可set/reset单元格值

getvalue 计算形如“=A1+2”or“=B3+C5”的加法结果

 class Spreadsheet

{

    unordered_map<string, int> data;

public:
Spreadsheet(int) {}

    void setCell(string cell, int value) {
data[cell] = value;
}

    void resetCell(string cell) {
data.erase(cell);
}

    int getValue(string formula) {
int i = formula.find('+');
string s = formula.substr(1, i - 1);
string t = formula.substr(i + 1);


// 注意 s 不在 data 中的时候,data[s] 会把 s 插入 data,这里从简没有判断
return (isupper(s[0]) ? data[s] : stoi(s)) +
(isupper(t[0]) ? data[t] : stoi(t));

}
};

 

http://www.dtcms.com/a/391273.html

相关文章:

  • Spring中Controller层中容易搞混的注解
  • Git GitHub 个人账户创建教程
  • Python学习系统计划:从零到精通的科学路径
  • 解锁 JavaScript 的数学魔法:深入探索 Math 对象
  • dcm4che系列主要开源项目概述
  • 枚举深入解析
  • Qt中delete与deleteLater()的使用
  • AD5621(单通道缓冲电压输出DAC)芯片的详细用法
  • vLLM的面试题
  • 最优控制3 -- 动态规划-一个解析解的例子
  • 深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论
  • 京东零售张科:DataAI Infra会成为驱动未来的技术基石
  • Java 运维中的一些常用命令
  • 用 go-commons 打造一套最小可行监控体系
  • 广东省省考备考(第一百零二天9.19)——言语(拔高突破第二节课)
  • 在vscode中,在powershell 下,如何进入子目录?
  • 易语言源码怎么制作软件 易语言源码和模块怎么做成软件
  • 4-2〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸目录遍历漏洞-B
  • 【Javaweb】http协议-请求与响应
  • 内网穿透系列十三:wstunnel 一款通过 Websocket 或 HTTP2 隧道传输的内网穿透工具
  • 【开关电源篇】自激振荡开关电源原理详解-从模块解析到故障维修
  • SpringBoot+Vue实现图片上传
  • C++ 函数指针与排序策略
  • 12分钟讲解Python核心理念
  • 01数据结构-串和KMP算法
  • 前端性能优化实用方案(三):骨架屏提升30%用户感知速度
  • NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控一站式建设方案
  • window XP环境下配置VC6.0的Win32汇编语言开发环境
  • 【算法】0_算法工程师常见算法题
  • 免费插件分享 | BaseTool