华为od机试 - 寻找目标字符串(javascript)
时间: 2023-05-08 14:00:34 浏览: 85
题目描述:
给定一个文本字符串text和一个要查找的目标字符串target,编写一个函数,返回目标字符串在文本字符串中的起始位置。如果目标字符串不存在于文本字符串中,则返回-1。
思路分析:
使用indexOf()函数可以实现查找目标字符串在文本字符串中的位置。如果indexOf()返回-1,表示目标字符串不存在于文本字符串中。
代码实现:
function findTargetString(text, target) {
return text.indexOf(target);
}
测试样例:
console.log(findTargetString("hello, world", "world")); // 输出7
console.log(findTargetString("hello, world", "hi")); // 输出-1
提示:
需要注意的是,查找时是区分大小写的。如果需要区分大小写,就可以直接使用indexOf()函数。如果不需要区分大小写,可以先将两个字符串都转换成小写再进行查找。
相关问题
华为od机试 - 过滤组合字符串
华为OD机试中关于过滤组合字符串的题目是一个典型的字符串处理问题。在这道题目中,我们需要编写一个函数,将两个字符串中的字符按照指定的顺序进行组合,并且过滤掉一些指定的字符。为了顺利地解决这道问题,我们需要使用一些字符串的常见操作技巧。
首先,我们需要使用一个数组来保存过滤掉的字符。对于两个字符串的组合操作,我们可以使用双指针的方法,分别从两个字符串的首部开始迭代,每次取出一个字符进行处理。在处理过程中,我们可以将取出的字符在过滤数组中进行查找,如果该字符需要被过滤,我们就直接忽略它,否则就将它放入新字符串中。
在进行字符串处理时,我们需要注意一些细节问题,例如要注意字符串是否为空、是否越界等。此外,为了优化算法的效率,我们应该尽可能地避免使用一些低效的操作,例如字符串的复制、连接等,这些操作容易产生大量的中间变量,从而增大内存的使用量,降低程序的运行效率。
总之,通过充分运用常见的字符串操作技巧,我们可以轻松地解决这道过滤组合字符串的问题,设计一款高效、健壮的算法,为华为OD机试中的编程挑战增添一份光彩。
华为od机试-字符串重新排列 js
字符串重新排列是一道比较基础的编程问题,主要考察对字符串的基本操作以及算法思维的理解。实现的思路可以分为以下几个步骤:
1. 统计字符串中每个字符出现的次数,可以用一个数组来记录。如果字符串中有多个相同的字符,数组中对应的元素值需要加上相应的次数。
2. 根据每个字符出现的次数,生成一个新的字符串。比如说原字符串为"hello",那么新字符串的可能是"eolh"。这里需要注意的是,新字符串中相同的字符的顺序需要和原字符串中相同。
3. 需要考虑特殊情况,即原字符串中有空格或者特殊字符等,需要排除这些字符。
最后,我们来看一下具体的代码实现:
```js
function rearrangeString(str) {
// 统计每个字符出现的次数
const count = {};
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (/\w/.test(char)) {
if (!count[char]) {
count[char] = 1;
} else {
count[char]++;
}
}
}
// 生成新的字符串
let newStr = '';
Object.keys(count).sort((a, b) => count[b] - count[a]).forEach((char) => {
newStr += char.repeat(count[char]);
});
return newStr;
}
```
代码中,我们首先定义一个count对象用来存储每个字符出现的次数。对于字符串中的每个字符,我们使用正则表达式/\w/来判断是否为字母或数字,如果是再进行统计。统计完成后,我们使用Object.keys(count)来获取count对象的键组成的数组,再使用数组的sort方法来排序,使出现次数多的字符排在前面。最后,我们遍历排序后的数组,根据记录的出现次数,使用字符串的repeat方法来生成新字符串。