【算法】【字符串模块】判断两个字符串是否是变形词
2023-09-11 14:14:53 时间
前言
当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~
在此感谢左大神让我对算法有了新的感悟认识!
问题介绍
原问题
给定两个字符串str1和str2,如果str1中出现的字符char的种类和个数与str2一模一样,则str1和str2互为变形词
如:str1 = “123” str2 = “231”
结果为true
解决方案
原问题:
1、统计str1所有词出现的频率,使用数组表达,其中index
2、再次统计str2中所有词出现的频率,注意,实在str1的统计结果上进行减少操作,每一次判断减少后是否小于0,如果小于0则返回false即可
代码编写
java语言版本
原问题:
经典递归版本:
/**
* 二轮测试
* @param str
* @return
*/
public static int getSumCp1(String str){
if (str == null || str.length() == 0) {
return 0;
}
char[] chars = str.toCharArray();
int res = 0;
int cur = 0;
// true为正数
boolean pos = true;
for (int i = 0; i < chars.length; ) {
if (i < chars.length && chars[i] != '-' && (chars[i] - '0' < 0 || chars[i] - '0' > 9)) {
// 不是‘-’并且也不是数字的直接略过
i++;
continue;
}
// 定符号
while (i < chars.length && chars[i] == '-') {
pos = !pos;
i++;
}
// 到这里只取数字
while (i < chars.length && chars[i] - '0' > 0 && chars[i] - '0' < 9) {
cur = cur * 10 + (chars[i] - '0');
i++;
}
res += pos ? cur : -cur;
// 复位
cur = 0;
pos = true;
}
return res;
}
c语言版本
正在学习中
c++语言版本
正在学习中
思考感悟
这道题很简单,主要有意思的其实是实现方式,str2的遍历使用str1的统计结果减的过程其实在实际业务上面真的可以更快,并且很巧妙,后续可以借鉴一下。
写在最后
方案和代码仅提供学习和思考使用,切勿随意滥用!如有错误和不合理的地方,务必批评指正~
如果需要git源码可邮件给2260755767@qq.com
再次感谢左大神对我算法的指点迷津!
相关文章
- Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
- Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
- 数据结构和算法15 之二叉树排序
- OpenCV每日函数 计算摄影模块(1) 图像修复算法 inpaint函数
- YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.68】添加CSPNeXt模块
- 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.63】结合CVPR 2023 即插即用动态稀疏注意力BiFormer模块
- 解决多线程安全问题-无非两个方法synchronized和lock 具体原理以及如何 获取锁AQS算法 (百度-美团)
- DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比、TF代码定义之详细攻略
- VSCode一键接入Notebook体验算法套件快速完成水表读数
- Python 实操案例:一文详解10种聚类算法
- 455. 分发饼干-排序加贪心算法
- EM算法简单介绍
- 目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块
- m基于归一化最小和译码算法的LDPC误码率性能仿真,对比不同的迭代次数,量化位宽以及归一化参数alpha
- DynaSLAM-14 DynaSLAM中RGB-D运行流程(Ⅳ):多视图几何部分Geometry.cc解析(深度区域生长算法、合并动态蒙版)
- 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.62】结合NeurIPS 2022年GhostnetV2网络模块