算法| ss 字符串数组对象

2024-04-06 04:12

本文主要是介绍算法| ss 字符串数组对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    1. 罗马数字转整数
  • 409.最长回文串
    1. 字符串相加
  • 594.最长和谐子序列

13. 罗马数字转整数

/*** @param {string} s* @return {number}*/
// 构建map匹配值,增加带IV这种的
// for遍历循环,
// 1.先看匹配是否满足2个字符的 i+2
// 2. 单个字符匹配
var romanToInt = function (s) {const map = {I: 1,IV: 4,V: 5,IX: 9,X: 10,XL: 40,L: 50,XC: 90,C: 100,CD: 400,D: 500,CM: 900,M: 1000,};let ans = 0;for (let i = 0; i < s.length; i++) {const substr = s.substring(i, i + 2);if (i + 1 < s.length && map[substr]) {ans += map[substr];i += 1;} else {ans += map[s[i]];}}//   console.log(ans);return ans;
};
// romanToInt("III");
// romanToInt("IV");
romanToInt("MCMXCIV");
// 示例 1:
// 输入: s = "III"
// 输出: 3
// 示例 2:
// 输入: s = "IV"
// 输出: 4

409.最长回文串

/*** @param {string} s* @return {number}*/
// 思路
// 统计各个字符出现的次数
// 统计奇数个数, 只留一个奇数个数,其他个数删除1
// 如果奇数个数大于1
// 总长度= 字符串长度- (奇数个数-1)
//
var longestPalindrome = function (s) {const map = {};for (let ch of s) {map[ch] = (map[ch] ?? 0) + 1;}let deleteCount = 0;for (let key in map) {if (map[key] % 2 !== 0) {deleteCount += 1;}}const ans = deleteCount > 1 ? s.length - (deleteCount - 1) : s.length;//   console.log(ans);return ans;
};
longestPalindrome("abccccdd");// 输入:s = "abccccdd"
// 输出:7

415. 字符串相加

/*** @param {string} num1* @param {string} num2* @return {string}*/
// 思路
// 从两个数的末尾进行取值 相加
// while循环很重要, i>=0 j>=0  carry>=0
// 往数组里添加 求余值放入数组  进位值进入下一轮计算
var addStrings = function (num1, num2) {let i = num1.length - 1;let j = num2.length - 1;let carry = 0;const res = [];while (i >= 0 || j >= 0 || carry !== 0) {let c1 = i >= 0 ? num1.charAt(i) - "0" : 0;let c2 = j >= 0 ? num2.charAt(j) - "0" : 0;// console.log("c1", c1);// console.log("c2", c2);const sum = c1 + c2 + carry;res.push(sum % 10);carry = Math.floor(sum / 10);i--;j--;}//   console.log(res);return res.reverse().join("");
};
addStrings("11", "123");
// 输入:num1 = "11", num2 = "123"
// 输出:"134"

594.最长和谐子序列

/*** @param {number[]} nums* @return {number}*/
// 思路
// 统计各个数出现的次数
// 利用map 来获取最大值
// map是有序的, 不想对象是无序的
var findLHS = function (nums) {const map = new Map();for (let ch of nums) {map.set(ch, (map.get(ch) ?? 0) + 1);}console.log(map);let max = 0;for (let key of map.keys()) {if (map.get(key + 1)) {max = Math.max(max, map.get(key) + map.get(key + 1));}}console.log(max);return max;
};
findLHS([1, 3, 2, 2, 5, 2, 3, 7]);
// 输入:nums = [1,3,2,2,5,2,3,7]
// 输出:5

这篇关于算法| ss 字符串数组对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878968

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1