力扣每日一题——回环句

  鉴于昨天卡点失败,今天决定提前做题,让Flag屹立不倒。打开leecode才知道原来每日一题不是一天挑一道题做,而是完成Leecode指定的那道题。个人觉得主观挑选会让难度长期偏低或偏高,不如跟着系统来,让我做啥就做啥!(还能得10个积分~~😀)

  今天才知道昨天的爬虫是多么重要,以至于老师重复了一天基础爬虫,爬完豆瓣爬酷狗;不过也通过爬虫发现了《消失的她》实火,豆瓣影评排行和酷狗音乐排行都有它的影子(博主也在这里推荐一下哈哈哈哈哈)。话不多说,直接开始今天的题目:

题目:回环句

句子 是由单个空格分隔的一组单词,且不含前导或尾随空格

例如,"Hello World"、"HELLO"、"hello world hello world" 都是符合要求的句子。
单词 仅 由大写和小写英文字母组成。且大写和小写字母会视作不同字符

如果句子满足下述全部条件,则认为它是一个 回环句

单词的最后一个字符和下一个单词的第一个字符相等
最后一个单词的最后一个字符第一个单词的第一个字符相等
例如,"leetcode exercises sound delightful"、"eetcode"、"leetcode eats soul" 都是回环句。然而,"Leetcode is cool"、"happy Leetcode"、"Leetcode" 和 "I like Leetcode" 都 是回环句。

给你一个字符串 sentence ,请你判断它是不是一个回环句。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:sentence = "leetcode exercises sound delightful"
输出:true
解释:句子中的单词是 ["leetcode", "exercises", "sound", "delightful"] 。
- leetcode 的最后一个字符和 exercises 的第一个字符相等。
- exercises 的最后一个字符和 sound 的第一个字符相等。
- sound 的最后一个字符和 delightful 的第一个字符相等。
- delightful 的最后一个字符和 leetcode 的第一个字符相等。
这个句子回环句。


示例 2:

输入:sentence = "eetcode"
输出:true
解释:句子中的单词是 ["eetcode"] 。
- eetcode 的最后一个字符和 eetcode 的第一个字符相等。
这个句子回环句。


示例 3:

输入:sentence = "Leetcode is cool"
输出:false
解释:句子中的单词是 ["Leetcode", "is", "cool"] 。
- Leetcode 的最后一个字符和 is 的第一个字符 不 相等。 
这个句子 是回环句。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/circular-sentence

下面展示大学二年级计算机科学与技术专业学生的解题方法: 

    虽然本次题目难度也是归为简单类型的,但是由于这次性能测试结果比较好,所以决定好好讲一讲解题思路;实际上题目难度摆在这里了,也就注定不管多优的解决方案代码都注定不会复杂~~

    这里的参数是一个字符串类型变量,字符串中的单词用空格隔开,这里判断是不是回环句也就是比较被空格隔开的两个字符是不是相等 ; 注意还要比较第一个字符和最后一个字符是否相等!!!这里使用的判断方法是,从 头 开始遍历 ,找到空格时,比较空格前一个字符与空格后一个字符是否相等,如果相等就继续比较;不相等就可以直接得出结论了。

   为了提高程序时间复杂度,这里选择先判断第一个字符与最后一个字符是否相等,如果不相等,就可以直接返回False,效率很高;判断过程中同样如此,一旦发现空格前后字符不想等,就直接返回False,大大提高时间性能。下面是具体代码:

class Solution {
public:
    bool isCircularSentence(string sentence) {
         int length=sentence.size();
    if(sentence[length-1]!=sentence[0])
    {
        return false;
    }
    for(int i=0;i<length;i++)
    {
        if(sentence[i]!=' '&&i!=length-1)
        {
            if(sentence[i+1]==' ')
            {
                if(sentence[i]!=sentence[i+2])
                {
                    return false;
                }
            }
        }
        
    }
    return true;
    }
};

在lecode给的环境里测试了一下,是可以通过测试的,由于这次性能相比前几次还是不错的,下面展示一下结果:

 同学们有什么可以提高性能的方法可以在评论教我一下🤭!

OKK!终于结束了我的第三篇文章~~~希望我能坚持超过21天(养成好习惯)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值