每日一道算法题 - SimpleSymbols(easy-5)

虽然都是很简单的算法,每个都只需5分钟左右,但写起来总会遇到不同的小问题,希望大家能跟我一起每天进步一点点。
更多的小算法练习,可以查看我的文章。

规则

Using the JavaScript language, have the function SimpleSymbols(str) take the str parameter being passed and determine if it is an acceptable sequence by either returning the string true or false. The str parameter will be composed of + and = symbols with several letters between them (ie. ++d+===+c++==a) and for the string to be true each letter must be surrounded by a + symbol. So the string to the left would be false. The string will not be empty and will have at least one letter.

使用JavaScript语言,让函数SimpleSymbols(str)获取传递的str参数,并通过返回字符串truefalse来确定它是否满足要求。
str参数将由+=与它们之间的若干字母符号组成(即, ++d+===+C++==a)。
当每个字母都被+包围时(如 +a+),返回true,否则(如 a+)返回false
ps:该字符串不会为空,并且至少有一个字母。

测试用例

Input:"+d+=3=+s+"
Output:"true"

Input:"f++d+"
Output:"false"

Input:"++f+a+d"
Output:"false"

my code

function SimpleSymbols(str) {
    if (str[0].match(/[a-z]/i) || str[str.length - 1].match(/[a-z]/i)) return false

    for (var i = 1; i < str.length - 1; i++) {
        if (!str[i].match(/[a-z]/i)) continue

        if (str[i - 1] !== '+' || str[i + 1] !== '+') return false
    }

    return true;
}

other code

code-1

function SimpleSymbols(str) {
    if (/^[a-zA-Z]/.test(str) || /[a-zA-Z]$/.test(str)) {
        return false;
    }
    if (/[^+][a-zA-Z]/.test(str) || /[a-zA-Z][^+]/.test(str)) {
        return false;
    }
    return true;
}

code-2

function SimpleSymbols(str) { 
    return (str).match(/([^+][a-z])|([a-z][^+])/gi) === null; 
}

思路

方法1: 通过字符串的遍历,检查每个字母是否被+包围

方法2:使用正则去匹配

    原文作者:an_l
    原文地址: https://segmentfault.com/a/1190000015583379
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞