【leetcode游记】竞赛题1876

ok, 第一次参加leetcode的双周赛。
我都是用c++写的。
主要是用来记录和总结自己做过的每一道leetcode题目。
一个菜鸡的游记过程。

题目:

如果一个字符串不含有任何重复字符,我们称这个字符串为 好 字符串。

给你一个字符串 s ,请你返回 s 中长度为 3 的 好子字符串 的数量。

注意,如果相同的好子字符串出现多次,每一次都应该被记入答案之中。

子字符串 是一个字符串中连续的字符序列。

题目链接:https://leetcode-cn.com/problems/substrings-of-size-three-with-distinct-characters/

首先,定位这道题目是一个字符串的题目。

类似滑动窗口找子字符串的感觉。

那就一个一个滑过去

就循环呗。
再来个判断是不是好的子字符串。
然后记录。

开始写:
(我这是用的clion编译器 可以在本地调试leetcode代码,也是琢磨了一会儿查了一下的)

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;



//可以的 是最简单的算法

class Solution {
public:
    int countGoodSubstrings(string s) {

        int num=0;
        if(s.length()<3)
        {
            return 0;
        }
        for(int i=0;i<=s.length()-3;i++)    //3 check
        {

            //如果子字符串不同,就加一
            if(s[i]!=s[i+1]&&s[i+1]!=s[i+2]&&s[i]!=s[i+2])
            {
                num++;
            }
            //清除sub
            //sub.clear();
        }
        return num;
    }

};



int main() {
    Solution s;
    string st="aababcabc";

    cout<<s.countGoodSubstrings(st);
    return 0;
}

这就结束啦。
也通过了。

这道题,对我来说,
逻辑上面想解题过程不难,
细节处有一些要注意的,
实现上也有不那么熟练的地方(可以学习的地方)。

细节:
开始只写了s.length()-3,没有一开始的if判断语句,这样leetcode会报错,貌似是卡在循环上。我后来看了官方的解,官方是相当于把s.length先算出来赋给一个变量,if条件里面写的只是这个变量。后来我把我的代码也一样改了,能过,说明这个地方确实是要先计算出来,否则会出错,至于原因我还没有探究。

实现上来说,值得记笔记的地方:
字符串 s.length() 得到的是字符的个数。字符串string调用其中的字符,可以像数组一样使用。

over.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值