前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >刷题之判断字符串是否有效

刷题之判断字符串是否有效

作者头像
雷子
发布2021-03-15 16:18:35
6130
发布2021-03-15 16:18:35
举报
文章被收录于专栏:雷子说测试开发
代码语言:javascript
复制
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,
判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

这里没有那么难去实现,用python ,我们可以利用str的替换的方式去实现,方法如下:

代码语言:javascript
复制
class Solution:
    def isValid(self, s: str) -> bool:
        while "{}" in s or "()" in s or "[]" in s:
            s = s.replace('{}', '')
            s = s.replace('[]', '')
            s = s.replace('()', '')
        return s == ''

那么我们看下对应的测试用例

代码语言:javascript
复制
class TestONeSolution(TestCase):
    def setUp(self) -> None:
        self.sone=Solution()
    def test_isValid(self):
        self.assertTrue(self.sone.isValid(""))
    def test_isValidone(self):
        self.assertFalse(self.sone.isValid("{"))
    def test_isValidtwo(self):
        self.assertTrue(self.sone.isValid("{}"))

运行结果:

那么我们来看下覆盖率

虽然我们的代码覆盖率是100%,但是我们实际的业务场景还是没有覆盖完呢,所以,代码覆盖率的100%不代表用例完全覆盖所有业务场景,只是代码我们覆盖了现有的业务的分支。但是可能里面还是有bug的存在的,如果没有100%的覆盖率,肯定是存在bug的。

我们来看下java的实现。

代码语言:javascript
复制
public class Code312 {
        public boolean isValid(String s) {
            if (s.contains("()") || s.contains("[]") || s.contains("{}")) {
                return isValid(s.replace("()", "").replace("[]", "").replace("{}", ""));
            } else {
                return "".equals(s);
            }

        }
}

我们看下测试代码,

代码语言:javascript
复制
public class Code312Test {

    @Test
    public void testIsValid() {
        Code312 code312=new Code312();
        assertTrue(code312.isValid(""));
    }
    @Test
    public void testIsValid1() {
        Code312 code312=new Code312();
        assertFalse(code312.isValid("{"));
    }
    @Test
    public void testIsValid2() {
        Code312 code312=new Code312();
        assertTrue(code312.isValid("{}"));
    }
    @Test
    public void testIsValid3() {
        Code312 code312=new Code312();
        assertFalse(code312.isValid("("));
    }
    @Test
    public void testIsValid4() {
        Code312 code312=new Code312();
        assertTrue(code312.isValid("()"));
    }
    @Test
    public void testIsValid5() {
        Code312 code312=new Code312();
        assertFalse(code312.isValid("{"));
    }
}

运行结果

覆盖率的情况

其实题目都不难的,我们慢慢的去分析这些问题即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档