编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成

编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成。“组合 ”的规则如下:

1). str中的每个字母要么来自于part1,要么来自于part2;

2). part1和part2中字母的顺序与str中字母的顺序相同。

例如:

"codewars"由"cdw"和"oears"组合而成:

s: c o d e w a r s = codewars

part1: c d w = cdw

part2: o e a r s = oears

function isMerge(s,part1,part2){
    if(!(s.length == part1.length + part2.length)) {
        return false;
    }else{
        var index1=0;
        var index2=0;
        for(var i=0; i<s.length; i++){
            if(s[i] == part1[index1]){
                index1++;
            }else if(s[i] == part2[index2]){
                index2++;
            }else{
                break;
            }
        }
        return (index1==part1.length) && (index2==part2.length);
    }
}
console.log(isMerge("codewars","cdw","oears")); //true

牛客网https://www.nowcoder.com/questionTerminal/71f75bb34c324b808f07d1d011161c94

时间: 2024-08-25 10:52:30

编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成的相关文章

写一个函数,判断一个正整数是否是水仙花数(扩展n位的自幂数)

//参数number是待判断的正整数,n为正整数位数(3位则为水仙花数),满足条件则返回1,反之返回0 bool isZiMiShu(int number, int n) { int __num = number, a[n], sum = 0, i = 0; while (number > 0) { a[i] = number % 10; sum += pow(a[i], n); number = (number - number % 10) / 10; i++; } return __num

C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. #include <stdio.h> #include <string.h> #include <assert.h> int reverse_string(char * str) { assert(str); int len=strlen(str); char *ch=str+len-1; while(len>1) { char tmp=*st

【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。

/*编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数.*/ #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_string

c语言:实现一个函数,判断一个数是不是素数。

实现一个函数,判断一个数是不是素数. 程序: #include <stdio.h> #include <math.h> int prime(int num) //prime表示素数 { int i = 0; int k = 0; k = sqrt(num); for (i = 2; i <= k; i++) { if (num%i == 0) { return 0; } } return 1; } int main() { int num; int ret; printf(&

一个函数只能返回一个值?笑话

函数的define:若有两个变量x和y,对于x的每一个值,y都有唯一确定的值与它对应,则y与x有函数关系.一般用表示.其中x叫做自变量,y叫做因变量. 唯一的值?对啊,C语言函数中也是只能return 一个的而已,虽然你能写多个return 到C语言的函数中,可是见到第一个return 后,后面的操作都是不执行的.读者可以试试!!那么,我们怎样从一个C语言函数中得到多个值呢?我们可以用些技术吧???对的,真的可以!!!①可以利用指针,指针里放着变量的地址,如果我们改变它的指向,不就可以改变它的值

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true:也就是实现这样一个函数boolean isPalindrome(int x); 分析一下,该题目主要是通过移位来实现,二进制模式从正向看和反向看是一样的,说明这个二进制数两边是对称的, 画个图看看: 代码如下: boolean isPalindrome(int x){ int flag = 1,i,j,temp;    while(1){        if(num&(0x1<<flag)){

面试题--&gt;写一个函数,返回一个数组中所有元素被第一个元素除的结果

1 package com.rui.test; 2 3 import java.util.Random; 4 5 /** 6 * @author poseidon 7 * @version 1.0 8 * @date:2015年10月25日 上午11:12:24 9 * @description: 面试题-->写一个函数,返回一个数组中所有元素被第一个元素除的结果 10 * 陷阱: 11 * 1.循环需要倒着写,为什么? 12 * 想想顺着写循环的结果,第一个元素的值会发生变化门后面再除就会有问

[编程之美]写一个函数,返回一个数组中所有元素被第一个元素除的结果

题目: 写一个函数,返回一个数组中所有元素被第一个元素除的结果: 错误的版本: void DivArray(int *array, int n) { for (int i = 0; i < n; ++i) { array[i] /= array[0]; } } 错误原因:在循环的第一步,第一个元素就变成了1,然后再用它去除以其他元素,就不符合题目要求了 改进: 1:使用其他变量保存第一个元素: void DivArray3(int *array, int n) { assert(array !=

使用一个函数找出一个整型数组中的最大值和最小值

/***************************************************** 知识点:bool类型,命名空间,输入输出 题目要求: 使用一个函数找出一个整型数组中的最大值和最小值 *****************************************************/ #include<stdlib.h> #include<iostream> using namespace std; namespace CJJ // 定义命名空间